<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>News</title>
    <link rel="stylesheet" type="text/css" href="css/common.css" />
    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
    <link rel="stylesheet" type="text/css" href="css/prettify.css" media="screen" />    
  </head>

  <body onload="prettyPrint()">
    <script type="text/javascript">prefix='';</script>
    <script type="text/javascript" src="js/prettify.js"></script>
    <script src="templates/header.js" type="text/javascript"></script>
    <div id="left">
      <noscript>Please turn on Javascript to view this menu</noscript>
      <script src="templates/left.js" type="text/javascript"></script>
    </div>
    <div id="right">
      <script src="templates/right.js" type="text/javascript"></script>
    </div>
    <div id="content">
	
    <h2>Logback News</h2>
  
    <p>You can receive logback-related announcements by subscribing to
    the <a href="http://www.qos.ch/mailman/listinfo/announce">QOS.ch
    announce</a> mailing list.</p>

    <hr width="80%" align="center" />

    <h3>11th of October, 2019, Release of version 1.3.0-alpha5</h3>

    <p class="highlight">The 1.3.x series is JPMS/Jigsaw/Java&nbsp;9
    modularized and requires slf4j-api version 2.0.x. Moreover, the
    1.3.x series requires Java&nbsp;8 at
    <b>runtime</b>.</p>

    <p>The 1.3.x series is Jigsaw/Java&nbsp;9 modularized and requires
    slf4j-api version 2.0.x. Moreover, the 1.3.x series requires
    Java&nbsp;8 at <b>runtime</b> whereas building logback from source
    requires Java&nbsp;9.  <br/></p>

    <p>Joran, logback's configuration system, has been rewritten to
    use an internal representation model which can be processed
    separately. As a side-effect, logback configuration scripts are
    now largely order-free. For example, appenders can now be defined
    after they are first referenced in a logger. Moreover,
    unreferenced appenders are no longer instantiated. Given the
    breadth of the changes in Joran codebase, support for
    <code>SiftingAppender</code> and Groovy configuration have been
    dropped temporarily.
    </p>
    
    <p>ConsoleAppender now delegates filtering of ANSI sequences to
    Jansi. This fixes <a
    href="https://jira.qos.ch/browse/LOGBACK-1392">LOGBACK-1392</a>
    reported by Alexandre Dutra who also provided the relevant patch.
    </p>
    
    <hr width="80%" align="center" />

    <h3>February 11th, 2018, Release of version 1.3.0-alpha4</h3>

    <br/>
    
    <div class="breaking">

      <p>Given that all currently available versions of Groovy are
      incompatible with Java 9, at least when built with Maven, we
      have momentarily <b>dropped support for Groovy
      configuration</b>, a.k.a Gaffer. For details refer to <a
      href="http://markmail.org/thread/nekeppbvwrfl7hbb#query:+page:1+mid:obdyvuv24kqpxm6v+state:results">this
      thread</a> and relevant <a
      href="https://issues.apache.org/jira/browse/GROOVY-8471">jira
      issue.</a></p>
    </div>
    

    <br/>  
    
    <div class="breaking">
      <p>Due to lack of user interest, logback-classic no longer
      supports <a href="manual/loggingSeparation.html">logging
      separation</a> by way of <code>ContextSelector</code>.</p>
    </div>
    
    <p>Under JPMS (Java 9), module <code>ch.qos.logback.core</code> is
    now able to read module <code>java.xml</code>. This fixes <a
    href="https://jira.qos.ch/browse/LOGBACK-1381">LOGBACK-1381</a>
    reported by Mark Raynsford.
    </p>

    <hr width="80%" align="center" />

    <h3>February 10th, 2018, Release of version 1.3.0-alpha3</h3>

    <p>Under JPMS (Java 9), allow user code to implement
    <code>ch.qos.logback.classic.spi.Configurator</code> as a
    service. This fixes <a
    href="https://jira.qos.ch/browse/LOGBACK-1380">LOGBACK-1380</a>
    reported by Mark Raynsford.
    </p>

    
    <p>Fix issue with properties containing JSON strings as reported
    in <a
    href="https://jira.qos.ch/browse/LOGBACK-1101">LOGBACK-1101</a>.
    </p>
    
    <hr width="80%" align="center" />

    <h3>January 30th, 2018, Release of version 1.3.0-alpha2</h3>

    <p>Depend on SLF4J version 1.8.0-beta1 instead of
    1.8.0-beta1-SNAPSHOT.</p>

    <p>Fix build under Travis.</p>
    
    <h3>January 30th, 2018, Release of version 1.3.0-alpha1</h3>
    


    
    <p>In the absence of a <span class="attr">class</span> attribute,
    the <code>shutdownHook</code> configuration directive now
    correctly assumes
    <code>ch.qos.logback.core.hook.DefaultShutdownHook</code>
    class. This fixes <a
    href="https://jira.qos.ch/browse/LOGBACK-1162">LOGBACK-1162</a>
    reported by Alex Selesse.</p>
    
    <p>Logback's internal <code>ThreadPoolExecutor</code> now has an
    initial pool of 1 thread instead of 8 previously.</p>

    <p>TimeBasedArchiveRemover is now able to deal with indexes over
    999. This fixes <a
    href="https://jira.qos.ch/browse/LOGBACK-1175">LOGBACK-1175</a>
    reported by Diego Furtado who also provided the relevant PR.
    </p>

    <p><code>SizeAndTimeBasedRollingPolicy</code> will correctly
    remove archived log files created within a given time period even
    if the last modified date for said files has been modifed since
    archiving or is otherwise incorrect. This fixes <a
    href="https://jira.qos.ch/browse/LOGBACK-1361">LOGBACK-1361</a> as
    reported by Peter Risko.</p>

    <p>String to Level conversion now handles strings with tailing
    spaces. This fixes <a
    href="https://jira.qos.ch/browse/LOGBACK-1288">LOGBACK-1288</a>
    reported by Gaurav Khanna.
    </p>
      
    <p><code>MDCFilter</code> will enforce the presence of
    <code>MDCKey</code> and <code>value</code> properties, refusing to
    start when either property absent. This fixes <a
    href="https://jira.qos.ch/browse/LOGBACK-1165">LOGBACK-1165</a>
    reported by Martin Steiger.
    </p>

    <p>Added the feature to update mime message before sending the
    email. This enhancement was requested in <a
    href="https://jira.qos.ch/browse/LOGBACK-1284">LOGBACK-1284</a> by
    Miguel Vale who also provided the relevant PR.</p>
    
    <p>If omitted, the <span class="option">scanPeriod</span>
    attribute in configuration file defaults to 1 minute. The
    documentation <a
    href="manual/configuration.html#autoScan">stated
    as much</a> but the code had not followed through. This issue was
    reported in <a
    href="https://jira.qos.ch/browse/LOGBACK-1194">LOGBACK-1194</a>
    with F. Buechler providing the appropriate patch.</p>

    <p>Updated JavaMail version to 1.6. This fixes <a
    href="https://jira.qos.ch/browse/LOGBACK-1094">LOGBACK-1094</a>
    reported by Romain Moreau.
    
    <p>Removed "final" modifier for the
    <code>LoggerContext.getLogger(String)</code> method. This fixes <a
    href="https://jira.qos.ch/browse/LOGBACK-1308">LOGBACK-1308</a>
    reported by Richard Sand.</p>
    
    
    <hr width="80%" align="center" />

    <h3>January 18th, 2018, Release of version 1.3.0-alpha0</h3>
    
   
    <p>Added support for minimum length in %i filename pattern. This
    fixes <a
    href="https://jira.qos.ch/browse/LOGBACK-1248">LOGBACK-1248</a>
    with John Gardiner Myers providing the relevant patch.</p>

    <p>Correct parsing of <code>java.version</code> system property
    for Java 9 and later. This fixes <a
    href="https://jira.qos.ch/browse/LOGBACK-1260">LOGBACK-1260</a>
    with Patrick Reinhart providing the relevant patch.
    </p>

    <p>ConsoleAppender now works with consoles confused by output
    strings of zero length, e.g.  Java Web Start. This fixes issue <a
    href="https://jira.qos.ch/browse/LOGBACK-1282">LOGBACK-1282</a>
    reported by Clas Forsberg.</p>
    
    <hr width="80%" align="center" />

    <h3>March 30th, 2017, Release of version 1.2.3</h3>

    <p>Fix unintentional dependency on
    <code>OutputStreamAppender</code> in
    <code>LayoutWrappingEncoder</code> as reported in <a
    href="https://jira.qos.ch/browse/LOGBACK-1287">LOGBACK-1287</a>.
    </p>
    
    <p>Fix spurious <code>System.out.println</code> in AsyncAppender's
    worker thread. This issue was reported in <a
    href="https://jira.qos.ch/browse/LOGBACK-1292">LOGBACK-1292</a> by
    Nikolas Loutas with Thibault Meyer the relevant patch.</p>

    <p>ConsoleAppender exception when run under Java WebStart. This
    problem was reported in <a
    href="https://jira.qos.ch/browse/LOGBACK-1282">LOGBACK-1282</a> by
    Clas Forsberg.</p>
    
    <h3>March 16th, 2017, Release of version 1.2.2</h3>

    <p><code>AsyncAppender</code> no longer drops events when the
    current thread has its interrupt flag set. This issue was reported
    in <a
    href="https://jira.qos.ch/browse/LOGBACK-1247">LOGBACK-1247</a> by
    Jakob Bergendahl who also provided the relevant pull request.
    </p>

    <p>Removed <code>JMSQueueAppender</code> and
    <code>JMSTopicAppender</code>. These appenders were undocumented
    and had no apparent users.</p>
    
    <p>Remove comment in logback-classic's
    <code>META-INF/services/javax.servlet.ServletContainerInitializer</code>
    file in order to keep Wildfly 8 happy. This issue was reported in
    <a href="https://jira.qos.ch/browse/LOGBACK-1265">LOGBACK-1265</a>
    by Andy Wilkinson.
    </p>

    <p><code>FileSize.toString()</code> now reports files sizes in GB
    in addition to sizes in MB and KB and Bytes. This fixes issue <a
    href="https://jira.qos.ch/browse/LOGBACK-1278">LOGBACK-1278</a>.</p>
    
    <hr width="80%" align="center" />

    <h3>March 1st, 2017, Release of version 1.1.11</h3>
    
    <p>Fix thread-safety issue with <code>PatternLayoutBase</code>
    reported in <a
    href="https://jira.qos.ch/browse/LOGBACK-1270">LOGBACK-1270</a> by
    Artem Bilan. Note that the fix was already present in the 1.2.x
    series and was back-ported to the 1.1.x series.</p>

    <hr width="80%" align="center" />

    <h3>February 9th, 2017, Release of version 1.2.1</h3>

    <p>To ensure backward compatibility of configuration files, the
    <span class="prop">immediateFlush</span> property set for a
    <code>LayoutWrappingEncoder</code> is propagated to the enclosing
    <code>OutputStreamAppender</code>.
    </p>

    <hr width="80%" align="center" />

    <h3>February 8th, 2017, Release of version 1.2.0</h3>

    <div class="breaking">
      <h4><code>Encoder</code> interface has changed and is no longer
      expected to handle an <code>OutputStream</code>.</h4>
    </div>


    <p><code>Encoder</code> interface has changed and is no longer
    expected to handle an <code>OutputStream</code>. This
    simplification allows finer-grain locking resulting in <a class="big"
    href="https://docs.google.com/spreadsheets/d/1cpb5D7qnyye4W0RTlHUnXedYK98catNZytYIu5D91m0/edit?usp=sharing">significantly
    improved performance</a>.
    </p>

    <p class="highlight">Release 1.2.0 fixes a rather severe
    serialization vulnerability in <code>SocketServer</code> and
    <code>ServerSocketReceiver</code>. Users running these components
    should upgrade immediately.</p>

    
    <p>This release fixes a rather severe serialization vulnerability
    in <code>SocketServer</code> and
    <code>ServerSocketReceiver</code>. Users running these components
    should upgrade immediately.
    </p>

    <p>In <code>TimeBasedRollingPolicy</code>, fixed issue with <span
    class="option">totalSizeCap</span> of more than 2^31. This problem
    was reported in <a
    href="https://jira.qos.ch/browse/LOGBACK-1231">1231</a> by Simon
    Teng.
    </p>

    <p>Logback-classic now searches for the file
    <em>logback-test.xml</em> first, <em>logback.groovy</em> second
    and <em>logback.xml</em> third. In previous versions
    <em>logback.groovy</em> was looked up first which was non-sensical
    in presense of <em>logback-test.xml</em>. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-1245">LOGBACK-1245</a>
    reported by Joern Huxhorn.
    </p>
 

    <hr width="80%" align="center" />

    <h3>February 5th, 2017, Release of version 1.1.10</h3>

    <p>Several changes to improve throughput (see <a
    href="https://docs.google.com/spreadsheets/d/1cpb5D7qnyye4W0RTlHUnXedYK98catNZytYIu5D91m0/edit?usp=sharing"><b>spreadsheet</b></a>)
    </p>

    <ol>
      <li>The <code>ReentrantLock</code> in
      <code>OutputStreamAppender</code> is now "unfair". In previous
      versions of logback, a fair lock was used. Fair locks are much
      slower. Just as importanly, logback has no mandate to influence
      thread scheduling.
      </li>

      <li><code>FileAppender</code> now offers the <span
      class="option">bufferSize</span> option. Previously, a
      fixed-size 8K buffer was used. Increasing the <span
      class="option">bufferSize</span>, for example to 256K,
      significantly reduces thread-contention.
      </li>

      <li>Critical parts of the code now use
      <code>COWArrayList</code>, a custom developed allocation-free
      lock-free thread-safe implementation of the {@link List}
      interface. It is optimized for cases where iterations over the
      list vastly outnumber modifications on the list. It is based on
      <code>CopyOnWriteArrayList</code> but allows allocation-free
      iterations over the list.
      </li>

      <li>In <code>PatternLayoutBase</code> the same
      <code>StringBuilder</code> is used over and over to reduce
      memory allocation. This is safe as long as the owning appender
      guarantees serial access to its layout.  In the next version of
      logback, i.e. 1.2.x, the read-write lock will no longer protect
      access to the layout and there will be no guarantee of
      serial access.
      </li>
    </ol>

    <p>In web-applications, logback-classic will <a
    href="manual/configuration.html#webShutdownHook">automatically
    install a listener</a> which will stop the logging context and
    release resources when your web-app is reloaded. This enhancement
    was requested <a
    href="https://jira.qos.ch/browse/LOGBACK-1170">LOGBACK-1170</a> by
    Martin Wegner.
    </p>

    <p>The <code>AccessEvent.prepareForDeferredProcessing()</code>
    method was not idempotent. This caused subtle bugs under
    Jetty. See <a
    href="https://jira.qos.ch/browse/LOGBACK-1189">LOGBACK-1189</a>
    for details. Many thanks to Per Olesen, Evan Meagher, Nick Babcock
    and Mark Elliot for hunting down this bug.
    </p>
    
    <p>As it may be time consuming in certain environments, the
    HOSTNAME property is now computed lazily. This optimization
    requested in <a
    href="https://jira.qos.ch/browse/LOGBACK-1221">LOGBACK-1221</a> by
    Eugene Petrenko.
    </p>


    <p>Joran now supports external XML entities. This feature was
    requested in <a
    href="https://jira.qos.ch/browse/LOGBACK-1091">1091</a> and the
    relevant PR graciously provided by Jonas Neukomm.
    </p>

   <hr width="80%" align="center" />

    <h3>January 20th, 2017, Release of version 1.1.9</h3>

    <p>Logback's internal executor service had a thread pool size of 2
    which could be used up rather quickly, e.g. configuration scanning
    in addition to an active <code>ServerSocketAppender</code>. When
    both threads where permanently in use, compression could not
    proceed. To alleviate this problem, the thread pool size has been
    increased to 8. See issue <a
    href="https://jira.qos.ch/browse/LOGBACK-1238">LOGBACK-1238</a>
    for more details.
    </p>

    <p>Fixed issue with <code>FileAppender</code> instances embedded
    within <code>SiftingAppender</code> reporting filename collisions
    after reaching timeout and subsequently restarted. This problem
    was reported in <a
    href="https://jira.qos.ch/browse/LOGBACK-1167">LOGBACK-1167</a> by
    Michael Edgar.
    </p>

    <p>Fixed <code>SizeAndTimeBasedFNATP</code> deprecation warning
    emitted even the replacement,
    i.e. <code>SizeAndTimeBasedRollingPolicy</code>, is in use. See <a
    href="http://jira.qos.ch/browse/LOGBACK-1236">LOGBACK-1236</a>. This
    issue was reported by Claudius Nicolae.      
    </p>
 
    <p>Added proper implementation for
    <code>LobackValve.getScheduledExecutorService()</code> method. The
    missing implementation manifested itself in the form of an
    <code>UnsupportedOperationException</code> thrown by
    LogbackValve. This problem is further described in <a
    href="http://jira.qos.ch/browse/LOGBACK-1181">LOGBACK-1181</a>
    reported by Andreas von Roepenack.
    </p>

    <hr width="80%" align="center" />

    <h3>December 9th, 2016, Release of version 1.1.8</h3>

    <p>Removed the two period safeguard, aka untouchable periods, for
    archive removal beyond the size specified by <span
    class="option">totalSizeCap</span> in
    <code>TimeBasedRollingPolicy</code>. It turns out the safegaurd is
    not required and is unexpected as attested by <a
    href="http://jira.qos.ch/browse/LOGBACK-1166">LOGBACK-1166</a>.
    </p>
    
    <p>Fixed issue with Joran incorrectly reporting "Unexpected
    aggregationType AS_BASIC_PROPERTY_COLLECTION". This issue was
    raised in <a
    href="http://jira.qos.ch/browse/LOGBACK-1158">LOGBACK-1158</a> by
    Christian H&uuml;bner.
    </p>

    <p>Gaffer (logback's groovy configurator) now supports the
    <code>valueOf</code> convention. This issue was raised in <a
    href="http://jira.qos.ch/browse/LOGBACK-1232">LOGBACK-1232</a> by
    Frans Orsel.
    </p>

    <p>The <code>org.slf4j.impl.StaticLoggerBinder</code> class
    shipping in logback-classic no longer catches
    <code>Throwable</code> but <code>Exception</code>. This change was
    requested in <a
    href="http://jira.qos.ch/browse/LOGBACK-1159">LOGBACK-1159</a> by
    David J. M. Karlsen.
    </p>

    <p><code>BeanDescriptionFactory</code> no longer outputs a
    superflous warning message in case the class contains bridge
    methods. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-1164">LOGBACK-1164</a>
    reported by Phil Clay.
    </p>

    <!--
    <p>Added logback-bom module for use as a Maven "Bill of Materials"
    <em>pom</em> file. This was requested in <a
    href="http://jira.qos.ch/browse/LOGBACK-1157">LOGBACK-1157</a>
    Joerg Sesterhenn.</p>
    -->    

    <hr width="80%" align="center" />

    <h3>March 29th, 2016, Release of version 1.1.7</h3>
    
    <p>Logback is now <a href="
    http://docs.oracle.com/javase/8/docs/technotes/guides/compactprofiles/compactprofiles.html">compact3
    profile</a> compatible. This improvement was requested in <a
    href="http://jira.qos.ch/browse/LOGBACK-1071">LOGBACK-1071</a> by
    Axel Fontaine with Max Urech providing the relevant pull-request.
    </p>

    <p>Fixed <code>ConcurrentModificationException</code> being thrown
    when the <code>reset()</code> method is invoked on the
    <code>LoggerContext</code> instance. This issue was reported in <a
    href="http://jira.qos.ch/browse/LOGBACK-397">LOGBACK-397</a> by
    Szczepan Faber with Ross Sargant providing the relevant test case.
    </p>

    <p><code>TimeBasedRollingPolicy</code> now supports the <a
    href="manual/appenders.html#tbrpTotalSizeCap"><span
    class="option">totalSizeCap</span></a> property which allows the
    user to limit the total size of archived logs.
    </p>
    
    <p><a
    href="manual/appenders.html#SizeAndTimeBasedRollingPolicy"><code>SizeAndTimeBasedRollingPolicy</code></a>
    offers the same functionality as
    <code>SizeAndTimeBasedFNATP</code> did previously but with a
    simpler configuration structure.
    </p>

    <p>Archive removal by <code>RollingFileAppender</code> is now
    performed asynchronously.</p>

    <p>Unnecessary and incompatible %i token in <span
    class="option">fileNamePattern</span> option with
    <code>RollingFileAppender/TimeBasedRollingPolicy</code> is now
    detected and the user alerted to the misconfiguration
    problem. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-1143">LOGBACK-1143</a>.
    </p>


    <p>Joran can now handle logger names ending with a $, i.e. the
    first character in variable substitution. This issue was raised in
    <a href="http://jira.qos.ch/browse/LOGBACK-1149">LOGBACK-1149</a>
    by by Stevo Slavic.
    </p>



    <hr width="80%" align="center" />
    
    <h3>February 29th, 2016, Release of version 1.1.6</h3>

     <p><code>LogbackValve</code> (in logback-access) now attempts to
    load the configuration file as a resource if it cannot be found on
    the filesystem (<a
    href="http://jira.qos.ch/browse/LOGBACK-1069">LOGBACK-1069</a>). This
    is helpful in scenarios where applications are using an embedded
    Tomcat server.</p>

    <p><code>JMXConfigurator.reloadDefaultConfiguration()</code>
    method now tolerates programmatic configuration without a
    URL. This change was provided by Vedran Pavic in <a
    href="https://github.com/qos-ch/logback/pull/302">PR 302</a>.
    </p>

    <p><code>RollingFileAppender</code> will output an error message
    if the date time pattern in the %d token within the <span
    class="option">fileNamePattern</span> is not collision free. This
    fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-1137">LOGBACK-1137</a>. In
    a similar vein, every instance of <code>FileAppender</code> will
    now detect if it shares the same <span class="option">File</span>
    option value as given for an appender defined earlier. In
    addition, <code>RollingFileAppender</code> instances now check for
    colliding <span class="option">FileNamePattern</span> values.</p>

    <p>Fixed <code>NullPointerException</code> thrown by
    <code>RollingFileAppender</code> if the name of the rollover
    target path did not contain a parent. This issue was reported in
    <a href="http://jira.qos.ch/browse/LOGBACK-1054">LOGBACK-1054</a>
    by Paulius Matulionis. Analysis of the problem and the relevant PR
    was provided by Ferenc Palkovics.</p>

    <p><code>BasicConfigurator.configure</code> method call executes
    significatly faster. Improved documentation for configuration
    using JDK 1.6 service-provider facility. These changes are in
    response to <a
    href="http://jira.qos.ch/browse/LOGBACK-1141">LOGBACK-1141</a>
    requesting faster logback start-up time.
    </p>


    <p>Fixed issue with variable substitution with the value ending in
    a colon. This problem was reported in <a
    href="http://jira.qos.ch/browse/LOGBACK-1140">LOGBACK-1140</a> by
    Eric Cook.</p>

    <hr width="80%" align="center" />
    
    <h3>February 13th, 2016, Release of version 1.1.5</h3>

    <div class="breaking">
      <h4>MDC values are no longer inherited by child threads.</h4>
    </div>

    <p>Child threads no longer inherit MDC values. In previous
    versions of logback as well as log4j 1.x, MDC values were
    inherited by child threads. Several users have argued convincingly
    that MDC inheritance by child threads was unhelpful and even
    dangerous. This change fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-422">LOGBACK-422</a> and <a
    href="http://jira.qos.ch/browse/LOGBACK-624">LOGBACK-624</a>
    </p>

    <p>When the <code>FileNamePattern</code> string for
    <code>RollingFileAppender/SizeAndTimeBasedFNATP</code> lacks a %i
    token, then compression for the second archive in the same period
    cannot occur as the target file already exists. Under those
    circumstances, logback leaves behind .tmp files as reported in <a
    href="http://jira.qos.ch/browse/LOGBACK-992">LOGBACK-992</a>, <a
    href="http://jira.qos.ch/browse/LOGBACK-173">LOGBACK-173</a> and
    <a
    href="http://jira.qos.ch/browse/LOGBACK-920">LOGBACK-920</a>. In
    this release, this particular condition is detected by
    <code>RollingFileAppender</code> which will not start but alert
    the user instead.
    </p>

    <p>AsyncAppender is now configurable to never block. This feature
    was requested by Jeff Wartes in <a
    href="http://jira.qos.ch/browse/LOGBACK-898">LOGBACK-898</a> with
    Jeff Wartes and Gareth Davis providing the relevant patch.
    </p>
  

    <hr width="80%" align="center" />
    
    <h3>February 11th, 2016, Release of version 1.1.4</h3>

    <div class="breaking">
      <h4>Logback 1.1.4 requires SLF4J version 1.7.16 or later.</h4>
    </div>

    <p>Added event replay support as introduced in SLF4J version
    1.7.15. In most circumstances, logack-classic should run fine with
    earlier versions of slf4j-api, including all versions in the 1.6.x
    and 1.7.x series. However, with a version of slf4j-api.jar earlier
    than 1.7.15 in the classpath, attempting introspection of a
    <code>Logger</code> instance will result in a
    <code>NoClassDefFoundError</code> similar to that shown below.
    </p>

    <pre class="prettyprint source">Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2451)
        at java.lang.Class.privateGetPublicMethods(Class.java:2571)
        at java.lang.Class.getMethods(Class.java:1429)
        at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1261)
        at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1122)
        at java.beans.Introspector.getBeanInfo(Introspector.java:414)
        at java.beans.Introspector.getBeanInfo(Introspector.java:161)
    </pre>

    <p>
    </p>

    <div class="breaking">
      <h4>Packaging data (as output in stack traces) is now disabled
      by default.
      </h4>
    </div>

    <p>In case an application throws exceptions frequently, then
    computing packaging data can be very costly and will cause the
    application to run slower. Making bad worse. To alleviate this
    problem, packaging data is no longer computed by default. It has
    to be <a href="manual/configuration.html#packagingData">enabled
    explicitly</a>. In the absence of explicit instructions, i.e the
    user has not specified a converter handling exceptions,
    <code>PatternLayout</code> in logback-classic will follow the
    settings defining for the logging environment. If packaging data
    is disabled, then it add %ex as a suffix in the pattern, and if
    packaging data is enabled then %xEx will be added. These changes
    fix <a
    href="http://jira.qos.ch/browse/LOGBACK-730">LOGBACK-730</a> and
    <a href="http://jira.qos.ch/browse/LOGBACK-966">LOGBACK-966</a>.
    </p>

   
    <p>Fixed a bug in
    <code>TimeBasedFileNamingAndTriggeringPolicyBase</code> causing
    time-based rolling policies to always rollover according to the
    local system time and ignore the time zone passed in the file name
    pattern. The issue was reported by Lukasz Sanek who also provided
    the the relevant fix. </p>

    <p><code>AsyncAppenderBase</code> now restores the current
    thread's interrupt flag when catching an
    <code>InterruptedException</code>. The issue
    (<a href="http://jira.qos.ch/browse/LOGBACK-910">LOGBACK-910</a>) was
    raised by Henrik Nordvik who also provided the relevant fix.</p>

    <hr width="80%" align="center" />
    
    <h3>24th of March 2015, Release of version 1.1.3</h3>


    <div class="breaking">
      <h4>As of version 1.1.3, all logback modules require JDK 1.6
      instead of previously JDK 1.5. This change was put to
      consultation on the logback mailing lists with no objections
      raised.</h4>
    </div>


    <p>Fixed <code>FileAppender</code>'s prudent mode so that it properly recovers
    from IO Errors
    (<a href="http://jira.qos.ch/browse/LOGBACK-1046">LOGBACK-1046</a>) </p>

    <p>Irrelevant or internal stack trace lines can now be omitted. Pull request
    provided by Tomasz Nurkiewicz
    (<a href="http://jira.qos.ch/browse/LOGBACK-540">LOGBACK-540</a>).</p>

    <p><code>AccessEvent</code> now creates a copy of request attributes when
    its <code>prepareForDeferredProcessing()</code> method is called. This makes
    attributes visible even if an appender uses a background thread to process
    events.
    (<a href="http://jira.qos.ch/browse/LOGBACK-1033">LOGBACK-1033</a>)</p>

    <p>All threads opened by <code>ch.qos.logback.core.util.ExecutorServiceUtil#THREAD_FACTORY</code>
    are now daemons, which fixes an application hang on shutdown when <code>LoggerContext#stop()</code>
    is not called (<a href="http://jira.qos.ch/browse/LOGBACK-929">LOGBACK-929</a>).
    Note that daemon threads are abruptly terminated by the JVM, which may cause
    undesirable results, such as corrupted files written by the <code>FileAppender</code>.
    It is still highly recommended for the application to call <code>LoggerContext#stop()</code>
    (e.g., in a shutdown hook) to gracefully shutdown appenders.</p>

    <p>Fixed an issue with <code>RollingFileAppender</code> where the first
    rollover file could be unintentionally deleted, depending on the specified
    filename pattern
    (<a href="http://jira.qos.ch/browse/LOGBACK-894">LOGBACK-894</a>).</p>

    <p>Fixed an issue with <code>TeeHttpServletResponse</code>
    where the system default encoding would be used instead of the
    response encoding when constructing a new writer
    (<a href="http://jira.qos.ch/browse/LOGBACK-1023">LOGBACK-1023</a>).</p>

    <p>Fixed <code>ConfigurationDelegate.groovy</code> to allow any appender
    that implements <code>AppenderAttachable</code>, which supports third-party
    appenders, such as <b>reactor-logback's</b> <code>AsyncAppender</code>
    (<a href="http://jira.qos.ch/browse/LOGBACK-1008">LOGBACK-1008</a>)</p>

    <p>Added support for specifying the callstack depth range in the
    <code>PatternLayout</code>. For example, <code>%caller{1..2}</code>
    displays the first two calls in the callstack.</p>

    <p>Added HTTP request method to <code>MDCInsertingServletFilter</code>.</p>

    <p>Fixed time-zone dependent code in <code>RollingCalendarTest</code>.
    (<a href="http://jira.qos.ch/browse/LOGBACK-116">LOGBACK-116</a>)
    </p>

    <p>Simplified connection logic of SocketApender to reduce multi-threading
    overhead and unnecessary instantiation of <code>SocketConnector</code>
    objects.</p>

    <p>Fixed race condition in <code>SMTPAppenderBase</code> causing missing or
    duplicate emails.
    (<a href="http://jira.qos.ch/browse/LOGBACK-909">LOGBACK-909</a>)
    </p>

    <p>Fixed an issue with <code>FileAppender</code> in prudent mode, where
    an interrupt could prevent further access to the file
    (<a href="http://jira.qos.ch/browse/LOGBACK-875">LOGBACK-875</a>).</p>

    <p>Fixed <code>IllegalStateException</code> when multiple threads
    write files to same directory
    (<a href="http://jira.qos.ch/browse/LOGBACK-128">LOGBACK-128</a>).</p>

    <p>Changed queue consumption strategy in <code>AbstractSocketAppender</code>
    from "take" to "peek/remove" in order to avoid losing an event on each socket
    connection break. Zero is now a deprecated queue size. A queue size of one
    should be taken instead to indicate synchronous processing.
    (<a href="http://jira.qos.ch/browse/LOGBACK-977">LOGBACK-977</a>)
    </p>
    
    <p><code>RequestLogImpl</code> now has an overridable <code>configure</code>
    method to allow extending implementations to configure it via methods
    other than the <code>logback-access.xml</code> file.</p>

    <p>Fixed a bug in <code>AccessEvent</code> which could cause any
    <code>AsyncAppender</code> based appender to corrupt the request
    headers, request parameters, or response headers, before logging.</p>

    <p>SQL scripts to setup your logback database are now provided as
    JAR resources
    (<a href="http://jira.qos.ch/browse/LOGBACK-948">LOGBACK-948</a>).
    </p>

    <p>Threads created internally by logback are now named
    <i>logback-n</i>, where <i>n</i> is an integer. For the
    first thread <i>n</i> is set to 1, for each successive thread
    <i>n</i> is incremented by 1.</p>

    <p>Added max runtime parameter to <code>AsyncAppender</code> to allow
    the appender to flush events, up to a maximum delay, during a stop
    of the LoggerContext. This can be used to ensure that all queued
    events are flushed.</p>
    
    <p>Added new configuration element <code>shutdownHook</code> to allow the
    user to specify a ShutdownHook implementation that will stop the Logback
    context upon JVM exit.
    </p>

    <p><code>BasicStatusManager</code> now prevents adding more than
    one instance of <code>OnConsoleStatusListener</code> as a status
    listener. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-976">LOGBACK-976</a>.
    </p>

    <p><code>TimeBasedRollingPolicy</code> now accepts a time zone in
    its <code>%d</code> conversion pattern. (<a
    href="http://jira.qos.ch/browse/LOGBACK-611">LOGBACK-611</a>)
    </p>

    <p>It is now possible to configure the character encoding used by
    <code>SyslogAppender</code> to encode messages using the
    <code>setCharset()</code> method. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-732">LOGBACK-732</a>
    </p>

    <h3>2nd of April, 2014 - Release of version 1.1.2</h3>

    <p>Create an abstract method, createOutputStream, as an extension point
    for subclasses of SyslogBaseAppender to create their own OutputStream.
    <a href="http://jira.qos.ch/browse/LOGBACK-890">LOGBACK-890</a>
    </p>

    <p>Removed deprecated constructors in <code>SocketAppender</code>
    and related classes.</p>

    <p>Fixed incorrect date format in <code>SyslogAppender</code>.
    (<a href="http://jira.qos.ch/browse/LOGBACK-936">LOGBACK-936</a>)
    </p>

    <p>Fixed <code>NullPointerException</code> when substituting blank variables
    (<a href="http://jira.qos.ch/browse/LOGBACK-959">LOGBACK-959</a>)</p>

    <p>Fixed <code>NullPointerException</code> that occurs when stopping a
    <code>SyslogAppender</code> that did not properly initialize, e.g.,
    due to a hostname resolution failure.
    (<a href="http://jira.qos.ch/browse/LOGBACK-960">LOGBACK-960</a>)
    </p>

    <p>Use fair locking in <code>OutputStreamAppender</code>. Patch provided by
    Sergey Bykov.
    (<a href="http://jira.qos.ch/browse/LOGBACK-268">LOGBACK-268</a>)
    </p>

    <p>In case of missing included files, IncludeAction no longer
    prints a stack trace but prints a warning instead. (<a
    href="http://jira.qos.ch/browse/LOGBACK-954">LOGBACK-954</a>)</p>

    <p>Fixed character escaping in XMLLayout
    (<a href="http://jira.qos.ch/browse/LOGBACK-728">LOGBACK-728</a>)
    and HTMLLayout
    (<a href="http://jira.qos.ch/browse/LOGBACK-440">LOGBACK-440</a>).</p>

    <hr width="80%" align="center" />

    <h3>5th of February, 2014 - Release of version 1.1.1</h3>

    <p>Logback now supports an unlimited level of <a
    href="manual/configuration.html#variableSubstitution">variable</a>
    resolution graphs rather than being limited to one level deep
    resolution.  This enhancement was requested by Anton Wiedermann in
    <a href="http://jira.qos.ch/browse/LOGBACK-943">LOGBACK-943</a>
    with Eric Dahl providing the relevant pull request.
    </p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LOGBACK-942">LOGBACK-942</a> which
    was causing <code>SocketAppender</code> to drop events. Eric Dahl
    provided the relevant pull request.
    </p>

    <hr width="80%" align="center" />

    <h3>January 28th, 2014 - Release of version 1.1.0</h3>

    <p>Previously, logback silently ignored configuration files that did
    not have the ".xml" or ".groovy" file extension. Now, a <code>LogbackException</code>
    is thrown to flag this error.
    </p>

    <p>Groovy configuration now supports <code>appenderRef</code>, which
    allows the use of <code>AsyncAppender</code> in Groovy.
    (<a href="http://jira.qos.ch/browse/LOGBACK-269">LOGBACK-269</a>)
    </p>

    <p><code>SizeAndTimeBasedFNATP</code> now supports a protected function
    <code>#createArchiveRemover</code> that allows subclasses to specify
    a custom archive remover used in <code>RollingFileAppender</code>. The
    default archive remover is <code>SizeAndTimeBasedArchiveRemover</code>.
    </p>

    <p><code>PackagingDataCalculator</code> now catches and ignores
    <code>UnsupportedOperationException</code> so that it can determine
    whether the JVM supports <code>Reflection#getCallerClass()</code>
    without printing that exception's stack trace. This only affects
    Java 7u40+, which removed support for <code>Reflection#getCallerClass()</code>.
    (<a href="http://jira.qos.ch/browse/LOGBACK-885">LOGBACK-885</a>)
    </p>

    <p>To facilitate debugging, <code>SimpleSocketServer</code> now names
    its threads: "<b>Logback SimpleSocketServer (port <i>PORTNUM</i>)</b>".
    <code>SocketNode</code> client threads are named:
    "<b>Logback SocketNode (client: <i>IPADDR</i>)</b>".
    </p>

    <p>Fixed silently lost messages from <code>SyslogAppender</code>
    when they exceeded the system datagram size limit. The default max
    message size was hard coded to 65KB but now matches the system limit
    (as read from
    <a href="http://docs.oracle.com/javase/6/docs/api/java/net/DatagramSocket.html#getSendBufferSize()">
    <code>DatagramSocket#getSendBufferSize()</code></a>) unless a
    nonzero limit is specified via <code>SyslogAppender#setMaxMessageSize()</code>.
    (<a href="http://jira.qos.ch/browse/LOGBACK-926">LOGBACK-926</a>)
    </p>

    <p>Fixed various documentation typos, including
    <a href="http://jira.qos.ch/browse/LOGBACK-466">LOGBACK-466</a>,
    <a href="http://jira.qos.ch/browse/LOGBACK-768">LOGBACK-768</a>,
    <a href="http://jira.qos.ch/browse/LOGBACK-904">LOGBACK-904</a>,
    <a href="http://jira.qos.ch/browse/LOGBACK-921">LOGBACK-921</a>,
    and
    <a href="http://jira.qos.ch/browse/LOGBACK-927">LOGBACK-927</a>.
    </p>

    <p><code>ContextBase.setStatusManager</code> now correctly validates
    the given status manager.
    (<a href="http://jira.qos.ch/browse/LOGBACK-912">LOGBACK-912</a>)
    </p>

    <p>The <code>SocketNode</code> creates an <code>ObjectInputStream</code>
    using the socket's input stream, which blocks waiting for the
    stream header. This wait has been moved from the constructor to
    <code>SocketNode.run()</code> so that the node can be created without
    blocking.
    (<a href="http://jira.qos.ch/browse/LOGBACK-350">LOGBACK-350</a>)
    </p>

    <p>Fixed <code>SecurityException</code> during initialization
    in Google AppEngine.
    (<a href="http://jira.qos.ch/browse/LOGBACK-760">LOGBACK-760</a>)
    </p>

    <p>The <code>&lt;include&gt;</code> element now allows optional
    resources (previously, only optional files).
    (<a href="http://jira.qos.ch/browse/LOGBACK-644">LOGBACK-928</a>)
    </p>

    <p>Added new layout conversion word (<b>%D</b> or <b>%elapsedTime</b>),
    which gets the time taken to serve the request. This applies
    only to Jetty and Tomcat logs via logback-access.
    (<a href="http://jira.qos.ch/browse/LOGBACK-320">LOGBACK-320</a>)
    </p>

    <p>Fixed SMTP error when the subject line contained multiple
    new-lines.
    (<a href="http://jira.qos.ch/browse/LOGBACK-865">LOGBACK-865</a>)
    </p>

    <p>Fixed unnecessary re-initialization of the servlet's
    <code>LoggerContext</code> while attempting to destroy it.
    </p>

    <p>Added the following syslog facilities to <code>SyslogStartConverter</code>:
    NTP, AUDIT, ALERT, CLOCK
    (<a href="http://jira.qos.ch/browse/LOGBACK-754">LOGBACK-754</a>)
    </p>

    <p>Fixed <code>NullPointerException</code> when setting a JUL
    logger's level to null, which should have reset the logger level
    to the parent's effective level.
    (<a href="http://jira.qos.ch/browse/LOGBACK-906">LOGBACK-906</a>)
    </p>

    <p>Added support to get suppressed exceptions. This is currently
    only implemented for <code>RootCauseFirstThrowableProxyConverter</code>
    and <code>ThrowableProxyConverter</code>.
    (<a href="http://jira.qos.ch/browse/LOGBACK-516">LOGBACK-516</a>)
    </p>

    <p>Fixed problem of Janino classes not found in some environments
    (axis2, GWT, etc.).
    (<a href="http://jira.qos.ch/browse/LOGBACK-832">LOGBACK-832</a>)
    </p>

    <p>Fixed various unit tests, including modifications for consistent
    results in Jenkins.
    (<a href="http://jira.qos.ch/browse/LOGBACK-842">LOGBACK-842</a>)
    </p>

    <p>Allow Gaffer to read the <code>logback.debug</code> system
    property to enable verbose output during Groovy-based configuration.
    Also added debug statements to Gaffer.
    </p>

    <p>Fixed <code>IllegalArgumentException</code> when missing periods
    and dollar signs in the logger name.
    (<a href="http://jira.qos.ch/browse/LOGBACK-384">LOGBACK-384</a>)
    </p>

    <p>Fixed <code>NullPointerException</code> during JNDI lookup.</p>

    <p>Fixed dangling data source connections from <code>DBAppender</code>
    that caused <i>"maximum open cursors exceeded"</i>.</p>

    <p>Fixed incorrect stack trace depth when specifying <code>%throwable</code>
    with argument.
    (<a href="http://jira.qos.ch/browse/LOGBACK-160">LOGBACK-160</a>)
    </p>

    <p>Fixed MySQL setup script to use lower-case table name to
    match the references in the file. This had caused an error
    on systems where case sensitivity matters.</p>

    <p>Fixed <code>NullPointerException</code> when getting code source in
    <code>PackagingDataCalculator</code>.</p>

    <p>The search path for <code>logback-access.xml</code> is now
    <code>${catalina.base}</code> and then <code>${catalina.home}</code>
    if not found.
    (<a href="http://jira.qos.ch/browse/LOGBACK-844">LOGBACK-844</a>)
    </p>

    <p>The <code>LoggingEvent</code> constructor delays message
    formatting so that it can be computed lazily by the
    <code>getFormattedMessage</code> method. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-873">LOGBACK-873</a> and
    re-fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-495">LOGBACK-495</a>.
    </p>

    <p><code>PackagingDataCalculator</code> now checks for the case
    where the caller has no protection domain. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-617">LOGBACK-617</a>
    reported by Yuri de Wit. The relevant fix was provided by Mikhail
    Mazursky.
    </p>
    

    <hr width="80%" align="center" />

    <h3>May 10th, 2013 - Release of version 1.0.13</h3>
  
    <p>In logback-access MANIFEST file, imports of Jetty and Tomcat
    are now optional. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-300">LOGBACK-300</a>
    reported by Christian Brensing who also provided the appropriate
    pull request.
    </p>

    <p>Logback will now correctly parses variables with a default
    separator string nested within accolades, e.g. "{a:-b}". Such
    strings resemble variable references but lack the $ prefix, e.g
    "${a:-b}". This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-859">LOGBACK-859</a>
    reported by Yoni Moses.</p>

    <p>In <code>InterpretationContext</code> class replaced code using
    JDK 1.6 API with code using JDK 1.5. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-860">LOGBACK-860</a>
    reported by Bas Stoker.
    </p>

    <p>Updated the "org.fusesource.jansi:jansi" dependency to version
    1.9.</p>

    <hr width="80%" align="center" />

    <h3>April 26th, 2013 - Release of version 1.0.12</h3>
    
    <p>A new <code>SSLSocketAppender</code> extends the basic 
    <code>SocketAppender</code> providing the ability to deliver 
    logging events over the Secure Socket Layer (SSL).  The 
    corresponding <code>SimpleSSLSocketServer</code> extends the classic 
    <code>SimpleSocketServer</code> as a basic logging server 
    application that receives logging events from a 
    <code>SSLSocketAppender</code>.</p>
      
    <p class="highlight">Receiver components are configured in
    logback.xml just like any other logback component.</p>

    <p>While <code>SimpleSocketServer</code> (and its new SSL-enabled
    counterpart, <code>SimpleSSLSocketServer</code>) provide an 
    easy-to-use standalone logging server application, a new component
    type known as a <em>receiver</em> allows <em>any</em> application 
    to receive logging events from remote appenders over a TCP/IP network 
    connection, using Logback Classic.  Receiver components are 
    configured in <em>logback.xml</em> just like any other logback 
    component.</p>
      
    <p>A receiver can either listen passively for connections from
    remote <code>SocketAppender</code> components acting as clients, 
    or it can assume the client role, initiating a connection to a 
    remote appender acting as a server.  The receiver components 
    shipped with Logback include full support for logging event 
    delivery over the Secure Sockets Layer (SSL).</p>

    <p>All of the new socket-based receiver and appender components were 
    contributed by Carl Harris.  See 
    <a href="manual/receivers.html">Receivers</a> in the Logback Manual 
    for more information on configuring receiver components.  See 
    <a href="manual/appenders.html#SocketAppender">SocketAppender</a> and
    <a href="manual/appenders.html#serverSocketAppender">ServerSocketAppender</a>
    for information on configuring appenders as event sources for
    receiver components.</p>

    <p><code>RollingFileAppender</code> will now detect when <span
    class="option">file</span> property collides with <span
    class="option">fileNamePattern</span>, emit <a
    href="codes.html#rfa_collision">an error message</a> and refuse to
    initialize. This was requested in <a
    href="http://jira.qos.ch/browse/LOGBACK-796">LOGBACK-796</a> by
    Karl Pietrzak who also provided a patch.
    </p>

    <p>In configuration files, the <code>&lt;include></code> element
    now admits the <span class="attr">optional</span> attribute. This
    fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-230">LOGBACK-230</a>
    reported by Attila Kiraly. Many thanks to Tommy Becker who
    contributed a patch.</p>

    <p>In response to <a
    href="http://jira.qos.ch/browse/LOGBACK-829">LOGBACK-829</a>,
    serialization of <code>Logger</code> instances has been
    significantly simplified and much unnecessary bloat removed. As an
    added bonus, the new serialization of <code>Logger</code> objects
    is also compatible with serialization streams using older Logger
    instances. <code>Logger</code> instances serialized by logback
    1.0.11 and earlier can be read by logback version 1.0.12 and later
    and <em>vice-versa</em>.
    </p>

    <p>The code detecting whether Groovy is available on the class
    path deals with the case where logback binaries are installed as
    endorsed libraries. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-831">LOGBACK-831</a>.
    </p>

    <p class="highlight">Groovy configurator no longer supports
    <code>SiftingAppender</code>.</p>

    <p>In response to <a
    href="http://jira.qos.ch/browse/LOGBACK-244">LOGBACK-244</a>, <a
    href="http://jira.qos.ch/browse/LOGBACK-724">LOGBACK-724</a> and
    in particular patches provided by Tommy Becker and David Roussel
    component tracking code has been simplified and completely
    re-written. <code>SiftingAppender</code> now supports the <a
    href="manual/appenders.html#siftTimeout">timeout</a> and <a
    href="manual/appenders.html#siftMaxAppenderCount">maxAppenderCount</a>
    parameters. As a direct consequence of modifications to component
    tracking code, the groovy configurator no longer supports
    <code>SiftingAppender</code>.</p>

    <p>SiftingAppender now propagates properties defined elsewhere in
    the configuration file into the configuration process of nested
    appenders. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-833">LOGBACK-833</a> with
    David Roussel providing the appropriate patch.
    </p>

    <p>As all other actions affecting properties,
    <code>TimestampAction</code> now inserts the user-specified
    property into the local scope by default. The property was
    inserted into the context scope in earlier versions of logback.
    This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-835">LOGBACK-835</a> with
    David Roussel providing the appropriate patch.
    </p>

    <p>Logback is now able to retrieve the name of localhost when
    running under OS X and Java 7. This issue was reported by <a
    href="http://jira.qos.ch/browse/LOGBACK-749">LOGBACK-749</a> by
    Oliver Schrenk with patches provided by Ralph Goers and Pavel
    Valodzka.
    </p>

    <p>The <a href="manual/layouts.html#mdc">mdc</a> converter can now
    handle default values. This feature was requested in <a
    href="http://jira.qos.ch/browse/LOGBACK-246">LOGBACK-246</a> by
    Michael Osipov with Denis Bazhenov providing a patch.
    </p>

    <p><code>DBAppender</code> in logback-classic module no longer
    assumes that caller information is always available. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-805">LOGBACK-805</a>
    reported by Daris Cooper who also provided a corrective patch.</p>

    <p>In order to simplify our build, several unit tests have been
    ported from Scala to Java. It follows that logback no longer
    depends on Scala, not even during the test phase of the build.</p>

    <h3>25th of March, 2013 - Release of version 1.0.11</h3>


    <p>Under Unix*, the basic/quick file rename method supplied by
    Java does not work if the source and target files are on different
    file systems. This problem was reported in <a
    href="http://jira.qos.ch/browse/LOGBACK-108">LOGBACK-108</a> by
    Daniel Potter. In order to deal with this issue, logback now will
    perform rename by copying if the source and target files are on
    different file systems and the host JDK is version 1.7 or
    later. See also the related <a
    href="codes.html#renamingError">error code</a>.</p>


    <p>The "cn" conversion word now correctly maps to
    <code>ContextNameConverter</code> class. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-463">LOGBACK-463</a>
    reported by Michael Osipov with Mark A. Ziesemer providing the
    appropriate patch.
    </p>

    <p>Added gray to the list of <a
    href="manual/layouts.html#coloring">ANSI colors supported by
    logback</a>. The relevant pull request was kindly provided by
    Craig P. Motlin.</p>

    <p>The <code>discoverConnectionProperties()</code> method in class
    <code>ConnectionSourceBase</code> no longer leaks
    connections. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-798">LOGBACK-798</a>
    reported by Sayevskiy Viacheslav. Many thanks to Ivan
    (Wee-Willie-Winkie) who contributed the appropriate fix.
    </p>

    <p>In logback-access, more correct determination of whether
    contents of an <code>HttpServletRequest</code> are URL encoded or
    not. The <a href="https://github.com/qos-ch/logback/pull/71">bug
    fix</a> was submitted by David Schneider. The same issue was later
    independently reported by Grzegorz Kuligowski in <a
    href="http://jira.qos.ch/browse/LOGBACK-814">LOGBACK-814</a>.</p>

    <p>Both <code>SocketAppenderBase</code> and
    <code>SimpleSocketServer</code> now use a socket factory to create
    sockets. These changes were asked in <a
    href="http://jira.qos.ch/browse/LOGBACK-815">LOGBACK-815</a> and
    <a href="http://jira.qos.ch/browse/LOGBACK-816">LOGBACK-816</a> by
    Carl Harris who also contributed the relevant patch.
    </p>

    <hr width="80%" align="center" />

    <h3>15th of March, 2013 - Release of version 1.0.10</h3>

    <p>Upgraded the (optional) groovy dependency to version 2.0.7
    (from 2.0.0).</p>

    <p>The logger cache field in <code>LoggerContext</code> now uses a
    <code>ConcurrentHashMap</code> instead of a regular
    <code>HashMap</code>. This dramatically improves the speed of
    logger retrieval and incidentally fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-142">LOGBACK-142</a>.
    </p>

    <p>In <code>SyslogAppender</code> allow <a
    href="manual/appenders.html#syslogSuffixPattern">suffixPattern</a>
    to begin with literal text. This issue was reported Bruno Polaco
    in <a href="http://jira.qos.ch/browse/LOGBACK-782">LOGBACK-782</a>
    who also provided the relevant patch.
    </p>
    
    <p>In order to reduce unnecessary boilerplate several common types
    and packages are now <a
    href="manual/groovy.html#AutomaticImports">imported
    automatically</a>. This feature was contributed by Joris
    Kuipers.</p>

    <p>Computation of caller information now takes into account Groovy
    frames (if nunning under Groovy). This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-811">LOGBACK-811</a>.</p>

  
  
    <hr width="80%" align="center" />

    <h3>December 5th, 2012 - Release of version 1.0.9</h3>

    <p>Removed an erroneous compile-time dependency on Tomcat in the
    logback-classic module. This issue was reported by Arnaud
    Heritier.</p>

    <hr width="80%" align="center" />

    <h3>December 4th, 2012 - Release of version 1.0.8</h3>

    <div class="breaking">
      <h4>logback-classic updated to use SLF4J version 1.7.2 instead
      of version 1.6.6.</h4>
      <p>The logback-classic module now uses SLF4J version 1.7.2
      instead of version 1.6.6. This only impacts projects running
      under an OSGi platform as SLF4J versions 1.7.x and 1.6.x are
      100% binary compatible.</p>
    </div>

    <p>Fixed incorrect <code>BufferStream</code> assignment after
    recovery in <code>ResilientFileOutputStream</code>. This issue was
    reported in <a
    href="http://jira.qos.ch/browse/LOGBACK-765">LOGBACK-765</a> by
    David Markwick.
    </p>

    <p>Fixed incorrect parsing of variables in case of colon character
    followed by a dollar character. This issue was reported in <a
    href="http://jira.qos.ch/browse/LOGBACK-744">LOGBACK-744</a>.</p>

    <p><code>SyslogAppender</code> now sends out the header line of
    stack traces. This issue was reported <a
    href="http://jira.qos.ch/browse/LOGBACK-411">LOGBACK-411</a> and
    separately as <a
    href="http://jira.qos.ch/browse/LOGBACK-750">LOGBACK-750</a>.</p>

    <p>A <code>StatusListener</code> implementing
    <code>LifeCycle</code> interface was not started if specified via
    the <code>logback.statusListenerClass</code> system property. This
    issue was reported in <a
    href="http://jira.qos.ch/browse/LOGBACK-767">LOGBACK-767</a> by
    Adam Sokowicz.
    </p>

    <p>In order to avoid duplication, automatic status printing will
    be disabled if the user explicitly registers a status
    listerner.</p>

    <p>Added <code>OnErrorConsoleStatusListener</code> to print status
    messages on the error console, i.e. on System.err. This feature
    was requested in <a
    href="http://jira.qos.ch/browse/LOGBACK-292">LOGBACK-292</a> by
    Abraham Lin. </p>

    <p>Added <code>NopStatusListener</code> class which simply drops
    incoming status messages. By <a
    href="manual/configuration.html#logback.statusLC">explicitly
    registering</a> a <code>NopStatusListener</code> listener,
    automatic status printing can be turned off.
    </p>


    <hr width="80%" align="center" />

    <h3>24th of August, 2012 - Release of version 1.0.7</h3>

    <div class="breaking">
      <h4>Janino library upgraded to version 2.6.1.</h4>

      <p>As of Janino version 2.6.0, in addition to
      <em>janino.jar</em>, <em>commons-compiler.jar</em> needs to be
      on the class path as well. Please see the <a
      href="setup.html#janino">Janino setup</a> instructions.</p>
    </div>
    
    <p>
    </p>

    <div class="breaking">
      <h4>Groovy dependency upgraded to version 2.0.0.</h4>

      <p>Please see the <a href="setup.html#groovy">Groovy setup</a>
      instructions.</p>
    </div>

    <p>The code handling variable substitution has been completely
    re-written. As requested in <a
    href="http://jira.qos.ch/browse/LOGBACK-729">LOGBACK-729</a>,
    variables can be now be nested arbitrarily, even within the
    default value section. For example,
    <code>${a${b:-c}:-${d:-e}}</code> is now a valid logback variable
    expression yielding "e", assuming variables with the keys 'd', 'b'
    and 'ac' are undefined. The new variable substitution code is
    designed to be backward compatible with existing configuration
    files.
    </p>
    

    <p>Substitution properties are now correctly recognized by <span
    class="attr">scan</span> and <span class="attr">scanPeriod</span>
    attributes of <code>&lt;configuration></code> element in
    configuration files. This fixes <a
    href="http://jira.qos.ch/browse/LOGBACK-396">LOGBACK-396</a>
    reported by Oh Chin Boon</p>

    <p>The color-related conversion words now set the default color
    correctly. Xu Huisheng provided the relavant patch.
    </p>
    
    <p>Fixed a race-condition in <code>AsyncAppender</code> and its
    worker thread. This issue was reported in <a
    href="http://jira.qos.ch/browse/LOGBACK-720">LOGBACK-720</a> by
    Arnd Hannemann who also supplied the relevant patch.</p>


    <p>If a <code>PropertyDefiner</code> implements
    <code>LifeCycle</code>, then its <code>start()</code> method will
    now be invoked.</p>

    <p>Added the <span class="prop">includeCallerData</span> property
    in <code><a
    href="manual/appenders.html#smtpIncludeCallerData">SMTPAppender</a></code>
    to precompute caller data before storing events for future
    transmission. This property addresses <a
    href="http://jira.qos.ch/browse/LOGBACK-734">LOGBACK-734</a>
    reported by Patrick Hogarty.
    </p>
    
    <hr width="80%" align="center" />

    <h3>7th of June, 2012 - Release of version 1.0.6</h3>

    <p><a
    href="manual/appenders.html#SMTPAppender"><code>SMTPAppender</code></a>
    now supports the retrieval of a <code>javax.mail.Session</code>
    resource from JNDI. This feature was requested in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-332">LBCLASSIC-332</a>
    by Hrotko Gabor.</p>

    <p>Listeners passed to <code>statusListener()</code> method in
    <code>GafferConfigurator</code> (the groovy configurator) are now
    correctly started.</p>

    <hr width="80%" align="center" />

    <h3>6th of June, 2012 - Release of version 1.0.5</h3>

    <p><a
    href="manual/appenders.html#ConsoleAppender"><code>ConsoleAppender</code></a>
    can now activate the <a href="http://jansi.fusesource.org">Jansi
    library</a> for ANSI color code support on Windows
    systems. Unix-based operating systems such as Linux and Mac OS X
    already support ANSI color codes by default.</p>

 
    <p><code>PatternLayout</code> now supports <a
    href="manual/layouts.html#coloring">composite conversion
    specifiers for coloring</a>.</p>

    <hr width="80%" align="center" />

    <h3>31st of May, 2012 - Release of version 1.0.4</h3>

    <p>Added <code>AsyncAppender</code> for asyncronous invocation of
    nested appenders. This was a long standing and popular request as
    attested by <a
    href="http://jira.qos.ch/browse/LBCLASSIC-177">LBCLASSIC-177</a>,
    <a href="http://jira.qos.ch/browse/LBCORE-92">LBCORE-92</a> and <a
    href="http://jira.qos.ch/browse/LBCLASSIC-242">LBCLASSIC-242</a>.</p>

    <p><code>SMTPAppender</code> now admits the <span
    class="prop">asynchronousSending</span> property, set to 'true' by
    default. However, it can be set to 'false' for synchronous email
    transmission. This property was requested in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-323">LBCLASSIC-323</a>
    by Patrick Houk.</p>

    <p>It is now possible to set a system property called <a
    href="manual/configuration.html#automaticStatusPrinting">"logback.debug"</a>
    in order to force printing of internal status messages on the
    console regardless of the value of the <span
    class="attr">debug</span> attribute found within the
    <code>&lt;configuration></code> element. This behavior was
    requested in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-225">LBCLASSIC-225</a>
    by Aaron Digulla with the relevant patch kindly provided by Antony
    Stubbs.
    </p>

    <p><code>MarkerFilter</code> now correctly recognizes nested
    markers. This issue was reported in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-295">LBCLASSIC-295</a>
    by Paolo Mazzoncini who also provided the relevant patch.</p>

    <p>Fixed invalid multiple configuration warning when deployed
    under Weblogic. This issue was reported in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-159">LBCLASSIC-159</a>
    by Hontv&aacute;ri J&oacute;zsef and with the appropriate patch
    provided by Derek Mahar.
    </p>

    <p><a
    href="manual/appenders.html#SyslogAppender"><code>SyslogAppender</code></a>
    now admits the <span class="prop">throwableExcluded</span>
    property allowing the exclusion of throwable data if so
    desired. This solves <a
    href="http://jira.qos.ch/browse/LBCLASSIC-327">LBCLASSIC-327</a>
    reported by Don Faulkner.
    </p>

    <p><a
    href="manual/appenders.html#SyslogAppender"><code>SyslogAppender</code></a>
    now admits the <span class="prop">stackTracePattern</span>
    property allowing the customization of the string appearing just
    before each stack trace line.  This fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-333">LBCLASSIC-333</a>
    reported by Ingebrigt Berg who also provided the relavant patch.
    </p>

    <p><code>DBAppender</code> now supports SQLite. This feature was
    requested in <a
    href="http://jira.qos.ch/browse/LBGENERAL-53">LBGENERAL-53</a> by
    Tony Trinh who also provided the relevant patch.</p>
   

    <h3>4th of May, 2012 - Release of version 1.0.3</h3>

    <p><code>PatternLayoutEncoder</code> class now admits the <span
    class="prop"><a
    href="manual/encoders.html#LayoutWrappingEncoder">immediateFlush</a></span>
    property (set to true by default). By setting this property to
    'false', logging throughput can be quintupled, although your
    mileage may vary. This enhancement was requested in <a
    href="http://jira.qos.ch/browse/LBCORE-243">LBCORE-243</a>.
    </p>

    <p>In order to facilitate parsing of log files, logback can now <a
    href="manual/encoders.html#outputPatternAsHeader">output the
    pattern</a> used for the log output at the top of log files as a
    header. This feature was requested by James Strachan in <a
    href="http://jira.qos.ch/browse/LBCORE-234">LBCORE-234</a>.
    </p>

    <p><code>SMTPAppender</code> failed to transmit messages under JDK
    1.5. After some investigation, Dave discovered that this was due to
    setting the <code>corePoolSize</code> parameter of the relevant
    <code>ThreadPoolExecutor</code> to 0. Setting
    <code>corePoolSize</code> to a higher value, e.g. 1, under JDK 1.5
    solves the problem and fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-323">LBCLASSIC-323</a>
    reported by Lutz Huehnken.
    </p>

    <p><code>LevelChangePropagator</code> now retains references to
    j.u.l. loggers whose level it sets. This fixes garbage collection
    issues reported in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-256">LBCLASSIC-256</a>
    by Samuel Stanojevic who also provided the appropriate patch.
    </p>
    

    <h3>26th of April, 2012 - Release of version 1.0.2</h3>

    <div class="breaking">

    <h4><span class="label">Breaking change partially reverted in
    1.0.3</span><br/>By default <code>PatternLayout</code> will now output
    its pattern at the top of log files</h4>

    <p>This feature, although still available, is no longer enabled by
    default. See release notes for version 1.0.3 for details.
    </p>


    </div>
    
    <p><code>ReconfigureOnChangeFilter</code> will avoid excessive
    syncronization in case of CPU intensive applications. This fixes
    <a
    href="http://jira.qos.ch/browse/LBCLASSIC-234">LBCLASSIC-234</a>,
    a recalcitrant bug reported by Uri Unger who also provided the key
    steps for reproducing it.
    </p>

    <p><code>RollingFileAppender</code> now creates missing
    directories for compressed archive files. This fixes <a
    href="http://jira.qos.ch/browse/LBCORE-169">LBCORE-169</a>
    reported by Tomasz Nurkiewicz with patches supplied by Paulo
    Andrade and Mats Henrikson.
    </p>

    <p><code>SizeAndTimeBasedFNATP</code> will now remove files with
    indexes higher than 99. It will also correctly compute the highest
    index value when an application is restarted. This fixes bug <a
    href="http://jira.qos.ch/browse/LBCORE-221">LBCORE-221</a>
    reported by Dieter Mueller and Dawid Chodura.</p>
  

    <hr width="80%" align="center" />

    <h3>7th of March, 2012 - Release of version 1.0.1</h3>

    <p>Setting the debug attribute to true in the
    <code>&lt;configuration></code> element now registers a
    <code>OnConsoleStatusListener</code> with the
    <code>StatusManager</code>.  Thus, problems occurring during the
    lifetime of your application, well after logback is initialized,
    can be reported when the <span class="attr">debug</span> attribute
    is set. This behavior is closer to what users expect.
    </p>

    <p>Added new property the <span
    class="prop">cleanHistoryOnStart</span> to <a
    href="manual/appenders.html#TimeBasedRollingPolicy">TimeBasedRollingPolicy</a>.
    By setting this property to <code>true</code>, history removal
    will work as expected even in the case of short lived
    applications. This fixes <a
    href="http://jira.qos.ch/browse/LBCORE-226">LBCORE-226</a>
    reported by Bruce E. Irving.
    </p>

    <p>It is now possible to specify multiple %d tokens in the file
    name pattern of <a
    href="manual/appenders.html#TimeBasedRollingPolicy">TimeBasedRollingPolicy</a>. Auxiliary
    %d tokens must be marked as such by passing the AUX
    parameter. This feature was requested in <a
    href="http://jira.qos.ch/browse/LBCORE-242">LBCORE-242</a> by
    Thomas Corte.</p>

    <p>Logback now supports suppressed exceptions introduced in Java
    7. This fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-276">LBCLASSIC-276</a>.
    </p>

    <p><code>SMTPAppender</code> clears the relevant cyclic buffer
    before asynchronous transmission. This corrects <a
    href="http://jira.qos.ch/browse/LBCLASSIC-221">LBCLASSIC-221</a>
    as reported by Chris Cheshire.
    </p>

    <p><code>SiftingAppender</code> will consider stale and
    consequently remove nested appenders which are closed or
    improperly started. This caters for the use case described in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-316">LBCLASSIC-316</a>
    by Guus Bloemsma.</p>

    <p><code>RequestLogImpl</code> can now lookup for the
    logback-access configuration file as a class path resource. This
    feature was requested in <a
    href="http://jira.qos.ch/browse/LBACCESS-26">LBACCESS-26</a> by
    Marshall Pierce.
    </p>

    <p>Updated the Janino dependency to version 2.5.16. In addition,
    the code checking for the availability of Janino on the class path
    was updated to take Janino 2.6 into account, thus fixing <a
    href="http://jira.qos.ch/browse/LBCORE-210">LBCORE-210</a>.
    </p>


    <hr width="80%" align="center" />

    <h3>1st of November, 2011 - Release of version 1.0.0</h3>

    <p>The logback-access module now targets Tomcat 7.x and Jetty 7.x
    &amp; 8.x as its servlet container platforms. This fixes <a
    href="http://jira.qos.ch/browse/LBACCESS-17">LBACCESS-17</a>
    reported by Grzegorz Grzybek.</p>

    <div class="breaking">

    <h4>Breaking change: properties are no longer automatically
    inserted into the context</h4>
    
    <p>Properties now have a scope. Previously, the definition of a
    property added it to the context. As of version 1.0, properties
    are local, i.e. transient by default. For further details, please
    refer to the <a
    href="manual/configuration.html#variableSubstitution">documentation
    on properties</a>.</p>
    </div>

    <p>Environment variables are now looked up during property
    substitution. This feature was requested in <a
    href="http://jira.qos.ch/browse/LBCORE-212">LBCORE-212</a> by
    Alexandre Garnier.
    </p>

    <p><code>SMTPAppender</code> now sends emails asynchronously.</p>

    <p>Investigation of <a
    href="http://jira.qos.ch/browse/LBCORE-224">LBCORE-224</a>
    reported by Cesar Alvarez Nunez points to bug in the JVM rather
    than in logback. A workaround has been found by using
    <code>CopyOnWriteArrayList</code> instead of the apparently buggy
    <code>ReadWriteLock</code>.</p>

    <p>In STARTTLS mode, "mail.smtp.auth" property is no longer set
    automatically. This fixes <a
    href="http://jira.qos.ch/browse/LBCORE-225">LBCORE-225</a>
    reported by Mark Woon.</p>

    <p>Logback-access now supports conditional configuration. This
    fixes <a
    href="http://jira.qos.ch/browse/LBACCESS-27">LBACCESS-27</a>
    reported by Marshall Pierce.</p>

    <p>Logback-access now supports inclusion of configuration
    files. See the <a
    href="manual/configuration.html#fileInclusion">chapter about
    configuration</a> in the logback's online manual for more
    information. </p>

    <p>Added <code>ch.qos.logback.core.read</code> to "Import-Package"
    declaration in logback-classic's manifest file. This fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-131">LBCLASSIC-131</a>
    reported by Michal Prihoda and Thomas Jaeckle.</p>

    <p>Fixed infinitely recursive calls in
    <code>AccessConverter#addError</code> methods as reported in <a
    href="http://jira.qos.ch/browse/LBACCESS-25">LBACCESS-25</a> by
    Pierre Queinnec.
    </p>

    <p>Fixed incorrect switch fallthrough while selecting between the
    H2 and HSQL dialects as reported in <a
    href="http://jira.qos.ch/browse/LBCORE-218">LBCORE-218</a> by
    Pierre Queinnec.
    </p>

    <h3>September 21st, 2011 - Release of version 0.9.30</h3>

    <p>Archive removal can now deal with prolonged periods of
    application inactivity and application stop and restarts. The
    issue is described in <a
    href="http://jira.qos.ch/browse/LBCORE-147">LBCORE-147</a>
    reported by Rafael Diaz Maurin.
    </p>

    <p>Logback-classic now supports printing stack traces "root cause
    first" instead of the standard "root cause last". See the
    documentation for <a
    href="manual/layouts.html#rootException">%rootException</a>
    converter for further details. The <code>%rootException</code>
    converter was contributed by Tomasz Nurkiewicz in relation with <a
    href="http://jira.qos.ch/browse/LBCLASSIC-217">LBCLASSIC-217</a>.
    </p>

    <p>In the <code>ILoggingEvent</code> interface the
    <code>getMDC</code> method is now deprecated and replaced by
    <code>getMDCPropertyMap</code>. The latter method was already part
    of the <code>ILoggingEvent</code> interface in prior versions of
    logback-classic. Furthermore, the value returned by
    <code>ILoggingEvent.getMDCPropertyMap</code> can now be an empty
    map but never null.</p>
   

    <p><code>LoggingEvent</code> no longer assumes that
    <code>LogbackMDCAdapter</code> is the only possible implementation
    of the <code>MDCAdapter</code> interface. This fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-275">LBCLASSIC-275</a>
    reported by Chris Dolan.
    </p>

    <p><code>LogbackMDCAdapter</code> now synchronizes over its thread
    local map. This prevents
    <code>ConcurrentModificationException</code> from occurring while a
    child thread copies the map from the parent. This fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-289">LBCLASSIC-289</a>
    reported by Josh Oddman.</p>

    <p>It is now possible to specify multiple destination addresses
    separated by commas in the the <span class="prop">to</span>
    property of <code>SMTPAppender</code>. This fixes <a
    href="http://jira.qos.ch/browse/LBCORE-213">LBCORE-213</a>
    reported by Alexandre Garnier who also provided the relevant
    patch. In previous versions of logback multiple destination
    addresses could only be specified by using multiple <span
    class="prop">to</span> properties. As of version 0.9.30 both
    comma separated addresses and multiple <span
    class="prop">to</span> properties are supported.
    </p>

    <p>When debug attribute is set to true within the
    <code>&lt;configuration></code> element, status messages are
    printed on the console after Joran (re)configures
    logback. Previously, all status messages were printed. With this
    release, only status messages created during (re)configuration are
    printed. This change fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-273">LBCLASSIC-273</a>
    reported by Joern Huxhorn.
    </p>

    <p>Single quotes within a date conversion specifier in filename
    patterns are now handled correctly. This fixes <a
    href="http://jira.qos.ch/browse/LBCORE-214">LBCORE-214</a>
    reported by Derek Libby.
    </p>

    <hr width="80%" align="center" />

    <h3>June 9th, 2011 - Release of version 0.9.29</h3>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCLASSIC-254">LBCLASSIC-254</a>,
    a performance issue in <code>LogbackMDCAdapter</code> as reported
    by Michael Franz.</p>

    <p>Given that events reference a snapshot of the current MDC map,
    the snapshot should not be cleared upon invocation of the
    MDC.clear operation. This issue was reported in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-253">LBCLASSIC-253</a>
    by Tommy Becker and independently fixed by the changes designated
    to fix LBCLASSIC-254.</p>

    <p>As reported by Deepak Vadgama in <a
    href="http://jira.qos.ch/browse/LBCORE-199">LBCORE-199</a>, the
    entry in every zip file created by
    <code>FixedWindowRollingPolicy</code> had the same name. The issue
    was solved by adding a timestamp to the name of the entry in the
    zip files as suggested by a Benoit Xhenseval.</p> 

    <p><code>ConfigurationWatchList</code> no longer emits an error
    message when it encounters a configuration file placed in a jar
    file, fixing <a
    href="http://jira.qos.ch/browse/LBCLASSIC-246">LBCLASSIC-246</a>
    as reported by Joern Huxhorn. This release also fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-247">LBCLASSIC-247</a>
    reported by Michael Franz.
    </p>


    <p>Logback now emits a clearer error message in case a conversion
    pattern misses a closing parenthesis or if an opening
    parenthesis is misplaced. This fixes <a
    href="http://jira.qos.ch/browse/LBCORE-193">LBCORE-193</a>
    reported by B. K. Oxley.</p>

    <p>Fixed thread safety issue in LRUMessageCache reported in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-255">LBCLASSIC-255</a>
    by C&eacute;sar &Aacute;lvarez N&uacute;&ntilde;ez.
    </p>

    <p>The AccessEvent class in logback-access module now implements
    the <code>IAccessEvent</code> interface. This fixes <a
    href="http://jira.qos.ch/browse/LBACCESS-12">LBACCESS-12</a>
    reported by Joern Huxhorn.</p>
    
    <hr width="80%" align="center" />

    <h3>January 25th, 2011 - Release of version 0.9.28</h3>

    <div class="breaking">
 
      <h4>Breaking change: In the Context interface, the previously
      misspelled property <code>bithTime</code> is now renamed as
      <code>birthTime</code>.</h4>
      
      <p>In the <a
      href="apidocs/ch/qos/logback/core/Context.html">Context</a>
      interface, the previously misspelled property
      <code>bithTime</code> is now renamed as
      <code>birthTime</code>. This is a backward-incompatible
      change. All pre-existing references to "bithTime" property now
      need to referenced as "birthTime".</p>
    </div>

    <p>Fixed <a href="http://jira.qos.ch/browse/LBCLASSIC-238">issue
    238</a> reported by Robert Elliot. <code>GEventEvaluator</code>'s
    start method now correctly sets the state of the instance.
    </p>

    <p><code>JaninoEventEvaluator</code> now expects Java blocks
    instead of boolean expressions. For even moderately complex
    logical statements, blocks can be more convenient to read or to
    write compared with boolean expressions. To ensure backward
    compatibility, existing boolean expressions are converted into
    blocks on the fly.
    </p>

    <p>Corrected handling of null valued arguments by DBAppender. This
    fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-239">LBCLASSIC-239</a>
    reported by Artyom Kalita.</p>

    <p>It is now possible to use the context birth time as the time
    reference for the <a
    href="manual/appenders.html#uniquelyNamed"><code>&lt;timestamp></code></a>
    element in configuration files.</p>

    <p>Logback can now scan for included files as well. This solves <a
    href="http://jira.qos.ch/browse/LBCLASSIC-245">LBCLASSIC-245</a>.
    </p>

    <hr width="80%" align="center" />

    <h3>December 22nd, 2010 - Release of version 0.9.27</h3>

    <p>Added a new section in the documentation about <a
    href="recipes/index.html">real-world inspired recipes</a>.</p>

    <p><code>PatternLayout</code> now supports compound conversion
    words of which <a
    href="manual/layouts.html#replace">"%replace"</a> is one
    example. This change involved a significant re-write of the
    pattern tokenizer, the pattern parser and the pattern
    compiler. However, the changes should be backward compatible as far
    as users are concerned.
    </p>

    <p>The <a href="manual/appenders.html#smtpTo"><span
    class="prop">to</span></a> option of SMTPAppender now admits a
    pattern and is evaluated dynamically.</p>

    <p><code>TeeServletInputStream</code> no longer chokes on input
    over 8K in size. This fixes <a
    href="http://jira.qos.ch/browse/LBACCESS-10">LBACCESS-10</a> as
    reported by Augusto Rodriguez.
    </p>

    <p><code>TeeFilter</code> now takes include and exclude parameters
    so that it can be enabled or disabled by host. This solves <a
    href="http://jira.qos.ch/browse/LBACCESS-15">LBACCESS-15</a>.</p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCLASSIC-231">LBCLASSIC-231</a>
    as reported by Jeff Skjonsby. When configuring
    <code>SizeAndTimeBasedFNATP</code>,
    <code>GaggerConfigurator</code> (Groovy) will no longer throw a
    <code>NullPointerException</code>.
    </p>

    <p>Every context now returns its own name when asked for the
    property <code>CONTEXT_NAME</code>. This fixes <a
    href="http://jira.qos.ch/browse/LBCORE-178">LBCORE-178</a> as
    requested by Michael Osipov.
    </p>


    <h3>20th of October, 2010 - Release of version 0.9.26</h3>


    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCLASSIC-183">LBCLASSIC-183</a>
    as reported by Anthony Whitford. Upon application restart, Tomcat
    should no longer complain about ThreadLocal variables created
    internally by logback.
    </p>

    <p><code>SMPTAppender</code> now lets users to set a custom buffer
    size for the outgoing messages. This fixes <a
    href="http://jira.qos.ch/browse/LBCORE-170">LBCORE-170</a> as
    requested by Peter Royal.
    </p>

    <p>When stopped, <code>RollingFileAppender</code> now calls
    <code>stop()</code> on its policy objects, fixing <a
    href="http://jira.qos.ch/browse/LBCORE-114">LBCORE-114</a>
    reported by Anders Wallgren.</p>

    <p>Added mapping for OFF and ALL levels in <code>JULHelper</code>
    as requested in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-226">LBCLASSIC-226</a>
    by Christian Brensing.
    </p>

    <h3>October 13th, 2010 - Release of version 0.9.25</h3>

    <p>Logback-classic now supports <a
    href="manual/configuration.html#LevelChangePropagator">propagation
    of level changes from logback-classic onto the
    j.u.l. framework</a>. This significantly reduces the performance
    impact of disabled log statements making it reasonable for
    real-world applications to use the <a
    href="http://slf4j.org/legacy.html#jul-to-slf4j">jul-to-slf4j
    bridge</a>.
    </p>

    <p>The <code>&lt;appender-ref></code> element now supports
    <a href="manual/configuration.html#variableSubstitution">variable substitution</a>, thus fixing <a
    href="http://jira.qos.ch/browse/LBCLASSIC-224">LBCLASSIC-224</a>
    as reported by David Harrigan.
    </p>

    <p>As reported in <a
    href="http://jira.qos.ch/browse/LBCORE-164">LBCORE-164</a>,
    <code>SizeAndTimeBasedFNATP</code> would cause previous logging
    files with indexes over nine to be overwritten on application
    restart. This complex bug was reported and precisely diagnosed by
    Dieter Mueller. He has also proposed a fix which was subsequently
    adopted as is.</p>

    <hr width="80%" align="center" />

    <h3>June 30th, 2010 - Release of version 0.9.24</h3>

    <p>Fixed NullPointerException thrown by
    <code>MDCBasedDiscriminator</code> in case the MDC map is
    null.</p>

    <p>Fixed issue with <code>SizeAndTimeBasedFNATP</code> in presence
    of application stop/restart and non-null file property. This issue
    was reported by Tom Liu in <a
    href="http://jira.qos.ch/browse/LBCORE-131">LBCORE-131</a>.</p>

    <hr width="80%" align="center" />

    <h3>June 29th, 2010 - Release of version 0.9.23</h3>

    <p>Fixed Groovy runtime dependency problem with
    ReconfigureOnChangeFilter, i.e. the auto-scan filter, when using
    non-groovy configuration files. This problem was reported in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-214">LBCLASSIC-214</a>
    by Alvin Chee.</p>

    <p>Fixed <code>MDCBasedDiscriminator</code> so that it supports deferred
    processing. This issue was reported in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-213">LBCLASSIC-213</a>
    by Torsten Juergeleit.</p>

    <hr width="80%" align="center" />

    <h3>June 21st, 2010 - Release of version 0.9.22</h3>

    <p>Logback now supports <a href="manual/groovy.html">configuration
    files written in Groovy</a> which are more convenient than
    configuration files written in XML. We have also developed a tool
    to <a
    href="http://logback.qos.ch/translator/asGroovy.html">automatically
    migrate your logback.xml files to logback.groovy</a>.
    </p>

    <p>Inspired by the functionality offered by
    <code>SiftingAppender</code>, <code>SMTPApppender</code> now can
    <a href="manual/appenders.html#smtpDiscriminator">track multiple
    buffers according to selection information returned by a
    discriminator</a>.
    </p>

    <p>Fixed synchronization issue in <code>ConsoleAppender</code> as
    reported in <a
    href="http://jira.qos.ch/browse/LBCORE-158">LBCORE-158</a> by
    David Roussel who also supplied a corrective patch.</p>


    <hr width="80%" align="center" />

    <h3>May 8th, 2010 - Release of version 0.9.21</h3>

    <p>SLF4J dependency upgraded to 1.6.0</p>

    <p>Fixed concurrency problem in <code>SiftingAppender</code> as
    reported in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-203">LBCLASSIC-203</a>
    by Ellen Strnod.
    </p>

    <p>Added <a
    href="manual/filters.html#GEventEvaluator">GEventEvaluator</a>
    which processes boolean expression written in the Groovy language.
    </p>

    <p>Fixed rollover problem occurring when the target directory was
    missing as reported in <a
    href="http://jira.qos.ch/browse/LBCORE-151">LBCORE-151</a> by
    Torsten Juergeleit. A closely related problem was reported in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-167">LBCLASSIC-167</a>
    by Rick Janda.
    </p>
    

    <hr width="80%" align="center" />

    <h3>April 2nd, 2010 - Release of version 0.9.20</h3>

    <p>Fixed issue related to charsets in
    <code>LayoutWrappingEncoder</code> not being recognized in config
    files.</p>

    <p>Logback now supports <a
    href="manual/configuration.html#conditional">conditional
    processing</a> of configuration files.</p>

    <p>A new extension point for <a
    href="manual/configuration.html#definingPropsOnTheFly">defining
    properties on the fly</a> has been added. The code for this
    enhancement was provided by Aleksey Didik in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-182">LBCLASSIC-182</a>.</p>
    
    <p>Logback now provides <a
    href="http://logback.qos.ch/manual/loggingSeparation.html">an
    answer</a> to the longstanding logging separation problem for
    static logger references in shared libraries. This fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-166">LBCLASSIC-166</a>
    and <a
    href="http://jira.qos.ch/browse/LBCLASSIC-87">LBCLASSIC-87</a>.
    </p>
 
    <p>Removed the previously deprecated <code>getFirstFilter</code>
    method in <code>FilterAttachable</code> interface.</p>

    <!-- ============================================================== -->

    <hr width="80%" align="center" />

    <h3>March 24, 2010 - Release of version 0.9.19</h3>


    <div class="breaking">

    <h4>Breaking change: FileAppender now expects an Encoder</h4>

    <p>In response to <a
    href="http://jira.qos.ch/browse/LBCORE-128">LBCORE-128</a>,
    <code>WriterAppender</code> has been renamed as
    <code>OutputStreamAppender</code>, <code>FileAppender</code> now
    sub-classing the latter. <code>OutputStreamAppender</code> and
    sub-classes now take an <code>Encoder</code> instead of a
    <code>Layout</code>. 
    </p>

    <p>Contrary to layouts which simply transform a logging event into
    a String, an encoder is responsible for writing the actual event
    or more accurately the representation of the event onto the output
    stream. The role of the enclosing appender is now limited to
    managing the output stream (opening/closing) but not writing
    actual contents onto the stream. This change will require <a
    href="codes.html#layoutInsteadOfEncoder"> modifications to
    existing configuration files</a>. We hope to make up for this
    inconvenience with cool new features which are only possible using
    encoders. <b>During a transition period, layouts passed as
    parameter will be automatically wrapped by an encoder so that
    configuration files in the old format (using a layout instead of
    encoder) will continue to work unmodified.</b>
    </p>

    </div>

    <br/>

    <div class="breaking">


      <h4>Breaking change: DBAppender in logback-classic expects four
      additional columns
      </h4>
      
      <p>Instead of lumping log request arguments into a field,
      <code>DBAppender</code> (in logback-classic) now outputs up to
      four arguments in the logging request in separate columns, named
      <code>arg0</code>, <code>arg1</code>, <code>arg2</code> and
      <code>arg4</code>. This solves <a
      href="http://jira.qos.ch/browse/LBCLASSIC-187">LBCLASSIC-187</a>
      reported by Greg Thomas.</p>

      <p>Existing databases can be migrated to the new table structure
      by altering the existing tables. Here is how it would be done
      in PostgreSQL and MySQL.</p>

      <pre class="prettyprint">ALTER TABLE logging_event ADD COLUMN arg0 VARCHAR(254);
ALTER TABLE logging_event ADD COLUMN arg1 VARCHAR(254);
ALTER TABLE logging_event ADD COLUMN arg2 VARCHAR(254);
ALTER TABLE logging_event ADD COLUMN arg3 VARCHAR(254);</pre>

    <p>In Oracle:</p>

    <pre class="prettyprint">ALTER TABLE logging_event ADD arg0 VARCHAR(254);
ALTER TABLE logging_event ADD arg1 VARCHAR(254);
ALTER TABLE logging_event ADD arg2 VARCHAR(254);
ALTER TABLE logging_event ADD arg3 VARCHAR(254);</pre>

      
    </div>
    <p><code>FileAppender</code> and derived classes can now
    gracefully deal with IO failures and recover quickly after the
    original cause of the IO failure is corrected. For example, if the
    log file is located on a <a
    href="http://en.wikipedia.org/wiki/Network-attached_storage">network-attached
    storage (NAS)</a>, and the connection to the NAS server is lost,
    <code>FileAppender</code> and derived classes will recover quickly
    after the connection to the server is re-established.
    </p>

    <p>The packages under <code>ch.qos.logback.classic</code>
    namespace no longer depend on <code>org.slf4j.impl</code>. This
    fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-184">LBCLASSIC-184</a>
    reported by Gunnar Wagenknecht.
    </p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCLASSIC-193">LBCLASSIC-193</a>.
    <code>SyslogAppender</code> will no longer shutdown when messages
    over 256Kb cause an <code>IOException</code>.
    </p>

    <p>Added <a
    href="manual/appenders.html#OnMarkerEvaluator">OnMarkerEvaluator</a>
    which evaluates to true in the presence of user-specified
    markers. When used with <code>SMTPAppender</code>, it can trigger
    an outgoing email message when an event matches user-specified
    marker.</p>

    <p>Request header names in AccessEvent (logback-access) are now
    stored in a case insensitive way as specified in RFC 2616.  This
    prevents compatibility issues, in particular with recent versions
    of Tomcat which store request header names in lower-case.</p>


    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCORE-134">LBCORE-134</a>
    reported by Michael Franz. While reading configuration files (in
    XML), the event handler will correctly process body text, in
    particular spaces, even when delivered in multiple chunks. The
    previous behavior of trimming leading and trailing white space has
    been preserved. Moreover, body text consisting of white space
    surrounding child elements is ignored.
    </p>
    
    <p><code>SiftingAppender</code> now exposes its
    <code>AppenderTracker</code>. Moreover, the
    <code>stopAndRemoveNow(String key)</code> method was added to
    <code>AppenderTracker</code>, allowing immediate removal of a
    nested appender.
    </p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCORE-130">LBCORE-130</a>.
    <code>FileNamePattern</code> no longer treats parenthesis as
    special.
    </p>

    <p>The <span class="prop">CharsetEncoder</span> property in
    <code>SMTPAppender</code> can now be accessed and set from
    configuration files. This fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-194">LBCLASSIC-194</a>.
    </p>

    <p>Instead of sending its output to the System.out/err reference
    that was effective at initialization, <code>ConsoleAppender</code>
    will now seek the most current System.out/err reference and send
    its output there. This fixes <a
    href="http://jira.qos.ch/browse/LBCORE-143">LBCORE-143</a> as
    reported by Tom SH Liu.
    </p>

    <p>DBAppender now outputs exception class and message. It will
    also output root causes, fixing
    <a href="http://jira.qos.ch/browse/LBCLASSIC-170">LBCLASSIC-170</a>
    reported by Tomasz Nurkiewicz.
    </p>

    <p>You can now override table and column names in DBAppender. This
    feature was requested in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-188">LBCLASSIC-188</a>
    reported by Tomasz Nurkiewicz.
    </p>

    <p>Fixed missing EVENT_ID column problem on PostgreSQL as reported
    in <a href="http://jira.qos.ch/browse/LBCORE-126">LBCORE-126</a>
    by Brian Edwards.</p>

    <p>Event id values in DBAppender are now 64bit instead of 32. This
    change was requested in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-198">LBCLASSIC-198</a>
    by Michael Lynch.
    </p>

    <p>Added Sybase SQLAnywhere support in DBAppender. This feature
    was requested by Michael Lynch in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-197">LBCLASSIC-197</a>.
    </p>

    <p>Added H2 support in DBAppender.</p>


    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBSITE-36">LBSITE-36</a> reported
    by John Jimenez.</p>

    <hr width="80%" align="center" />

    <!-- ======================================================================== -->

    <h3>3rd of December 2009 - Release of version 0.9.18</h3>

    <p>After a very long investigation resulting in somewhat a better
    understanding of licensing issues, logback is now <a
    href="license.html">dual-licensed</a> under the EPL 1.0 and LGPL
    2.1.
    </p>

    <p>Due to a clerical error <a
    href="http://jira.qos.ch/browse/LBCORE-26">LBCORE-26</a> has
    re-raised its ugly head. It has now been tamed for good.</p>

    <p>Fixed Private-Package and Export-Package sections in
    logback-classic.jar MANIFEST as reported in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-165">LBCLASSIC-165</a>
    and <a
    href="http://jira.qos.ch/browse/LBCLASSIC-121">LBCLASSIC-121</a>
    by applying the relevant patches supplied by Hugues Malphettes.
    </p>

    <p>Made the OSGi import declarations for Janino and javax optional
    as proposed by David Varnes in <a
    href="http://jira.qos.ch/browse/LBCORE-101">LBCORE-101</a>.</p>

    <p><code>ReconfigureOnChangeFilter</code> did not pick up changes
    for configuration files containing spaces. This issue was reported
    in <a href="http://jira.qos.ch/browse/LBCORE-119">LBCORE-119</a>
    by Anders Wallgren.
    </p>

    <p>Added tests cases which run logback artifacts as bundles within
    Felix. This should solve a series of problems related to OSGi.</p>

    <p>When ill-formed configuration files fragments were included in
    another configuration file, the included file was not closed
    correctly. This issue was reported in <a
    href="http://jira.qos.ch/browse/LBCORE-122">LBCORE-122</a> by
    Michael Franz.
    </p>

    <p>JaninoEventEvaluator now passes the throwable associated with
    an event as a <code>java.lang.Throwable</code> instead of an
    <code>IThrowableProxy</code>. This fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-155">LBCLASSIC-155</a>
    as reported by Hontv&aacute;ri J&oacute;zsef. See <a
    href="manual/filters.html#evalutatorFilter">EvaluatorFilter
    documentation</a> for more details.</p>

    <p>The name of the log file nested within .zip archives was
    incorrectly set to be that of the tmp file logback creates during
    compression. Anders Wallgren reported and posted an appropriate
    patch for this problem in <a
    href="http://jira.qos.ch/browse/LBCORE-98">LBCORE-98</a>.  The
    nested file is now named after the zip archive file. Analysis
    showed that this was an appropriate strategy in all the cases we
    considered.</p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCLASSIC-149">LBCLASSIC-149</a>. The
    ContextNameConverter now correctly uses the context name of the
    event instead of its own context name.
    </p>

    <p>When a logger is named after an inner class, the '$' is used as
    a separator, instead of the usual '.'. This fixes the level
    inheritance issue described in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-102">LBCLASSIC-102</a>
    and as reported by Joern Huxhorn.</p>

    <p>Fixed deadlock issue observed with appender which invoke
    loggers as reported in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-154">LBCLASSIC-154</a>
    by Andrew Perrine and debugged by Ralph Goers who also proposed
    the relevant patch.</p>

    <hr width="80%" align="center" />

    <h3>9th of August 2009 - Release of version 0.9.17</h3>

    <p><code>PackagingDataCalculator</code> now correctly deals with
    <code>NoClassDefFoundError</code> thrown by class loaders. This
    fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-125">LBCLASSIC-125</a>
    reported by Roland Klein and independently by Didier Besset.
    </p>

    <p>In configuration files, all tags names associated with explicit
    actions are now case-insensitive. This should diminish
    case-related errors users may make when writing configuration
    files. Tag names associated with implicit actions which are
    closely linked to the actual Java class being configured, still
    need to follow the camelCase convention. If you are unsure which
    case to use for a given tag name, just follow the camelCase
    convention for tag names which should be correct in most
    cases. </p>

    <p>It is now possible to create <a
    href="manual/appenders.html#uniquelyNamed">uniquely named files by
    timestamp</a>. Such files are appropriate for log files associated
    with batch applications. This enhancement fulfills <a
    href="http://jira.qos.ch/browse/LBCORE-91">LBCORE-91</a> as
    requested by Rick Beton and Szel Zoltan.
    </p>

    <p>Append mode is now mandatory in
    <code>RollingFileAppender</code>. This was already the default and
    truncation mode is unreasonable in most cases. For example, in
    truncate mode when an application stops and is quickly re-started,
    any pre-existing log file for the current period will be lost.</p>

    <p>The <code>activeFile</code> field in
    <code>RollingFileAppender</code> is now properly updated, fixing
    <a href="http://jira.qos.ch/browse/LBCORE-90">LBCORE-90</a> as
    reported by Valery Shorin.</p>


    <p>The <code>TimeBasedTriggeringPolicy</code> has been heavily
    refactored. It is now possible to trigger rolling simultaneously
    by <a href="manual/appenders.html#SizeAndTimeBasedFNATP">time and
    by size</a>, fixing <a
    href="http://jira.qos.ch/browse/LBCORE-61">LBCORE-61</a>.
    </p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCLASSIC-145">LBCLASSIC-145</a>
    reported by Joern Huxhorn. The <code>LoggingEventVO</code> class
    now correctly populates its callerData field if the original
    <code>ILoggingEvent</code> already has it.</p>

    <hr width="80%" align="center" />

    <h3>15th of July 2009 - Release of version 0.9.16</h3>

    <p>In addition to nifty new features, this release contains
    several important internal changes. Given the importance of some
    of those internal changes, <em>this release may be less stable
    than previous logback releases</em>.</p>

    <p>In logback-classic, <a
    href="xref/ch/qos/logback/classic/spi/LoggingEvent.html"><code>LoggingEvent</code></a>
    now implements the <a
    href="xref/ch/qos/logback/classic/spi/ILoggingEvent.html"><code>ILoggingEvent</code></a>
    interface. All logback-classic components expect to process
    <code>ILoggingEvent</code> instances. Moreover, events which sent
    to a remote host are now of type <a
    href="xref/ch/qos/logback/classic/spi/LoggingEventVO.html"><code>LoggingEventVO</code></a>.
    </p>

    <p>Logback-classic will now <a
    href="manual/configuration.html#autoScan">automatically
    re-configure itself</a> when its configuration file is
    modified. This enhancement was requested in <a
    href="http://jira.qos.ch/browse/LBCORE-59">LBCORE-59</a> by
    Michael Osipov.</p>

    <p>FileAppender and its derived class RolllingFileAppender are now
    based on a finer-grain synchronization model. This change is aimed
    at reducing various synchronization related bugs, namely <a
    href="http://jira.qos.ch/browse/LBCLASSIC-135">LBCLASSIC-135</a>
    and its various sub-tasks.
    </p>

    <p>Fixed a bug in the localLevelReset() method in the
    <code>Logger</code> class which inadvertently used the DEBUG_INT
    value in the org.slf4j.spi.LocationAwareLogger interface instead
    of the DEBUG_INT value in ch.qos.logback.classic.Level class. The
    issue was first identified by Andy Ruch <a
    href="http://qos.ch/pipermail/logback-user/2009-February/000955.html">in
    a message</a> to the logback-user list
    </p>

    <p>If the logger name had 12 or more segments, a the logger
    conversion specified would throw an
    <code>ArrayIndexOfBounds</code> exception. Lukas Zapletal has
    kindly reported this problem in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-110">LBCLASSIC-110</a>
    and provided a test case.
    </p>

    <p>A new discriminator class called "ContextBasedDiscriminator"
    allows SiftingAppender to separate logging based on the context
    name. This fits nicely with the requirements expressed in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-117">LBCLASSIC-117</a>
    by Rick Janda.
    </p>
    
    <p>When a context is reset, then its object and property maps are
    now cleared. This fixes <a
    href="http://jira.qos.ch/browse/LBCORE-104">LBCORE-104</a>
    reported by Johan Bos.
    </p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCORE-105">LBCORE-105</a>. Configuration
    files placed in jar files will no longer lock the jar file. This
    issue was initially reported for log4j in <a
    href="https://issues.apache.org/bugzilla/show_bug.cgi?id=47465">bug
    47465</a> Mark Thomas.
    </p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCORE-94">LBCORE-94</a>. While
    configuring a RollingFileAppender, if the File property is
    declared after any rolling or triggering policies, then logback will
    now generate an error status message.
    </p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCLASSIC-134">LBCLASSIC-134</a>
    reported by Darryl Smith. <code>DuplicateMessageFilter</code> will
    now behave correctly when invoked via
    <code>Logger.isXXXEnabled</code> methods.
    </p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCORE-107">LBCORE-107</a>,
    incorrectly set context information for the
    <code>NestedBasicPropertyIA</code> instance in Joran, reported by 
    L&oacute;r&aacute;nt Pint&eacute;r.
    </p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCLASSIC-109">LBCLASSIC-109</a>,
    reported by Andrew Ruch when a logger context was reset, the trace
    level was erroneously enabled.
    </p>

    <hr width="80%" align="center" />

    <h3>12th of February 2009 - Release of version 0.9.15</h3>

    <p>When the reset() method in <code>LoggerContext</code> is
    called, registered turbo filters are first stopped before being
    unregistered. This fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-89">LBCLASSIC-89</a>
    reported by Alexis Morillo.
    </p>

    <p>Added a servlet for viewing internal status messages as an HTML
    table. Two separate implementations are available; one for <a
    href="manual/configuration.html#viewingStatusMessages">logback-classic</a>
    and the other for <a
    href="access.html#viewingStatusMessages">logback-access</a>.</p>

    <p>Added the <code>clear()</code> method to the
    <code>StatusManager</code> interface. After reconfiguration, it
    may be desirable to clear the status list maintained by a
    <code>StatusManager</code>. This change was requested by Alexis
    Morillo in <a
    href="http://jira.qos.ch/browse/LBCORE-77">LBCORE-77</a>.
    </p>

    <p>Fixed problem <a
    href="http://jira.qos.ch/browse/LBCLASSIC-104">LBCLASSIC-104</a>
    related to loss of MDC information in deferred logging events.
    </p>

    <p>Fixed issue <a
    href="http://jira.qos.ch/browse/LBCLASSIC-101">LBCLASSIC-101</a>. Logback
    jar files now include full OSGi bundle information in their
    manifests. This information is automatically added by Apache
    Felix' Maven bundle plug-in. The generated manifest files contain
    an appropriate Bundle-RequiredExecutionEnvironment directive,
    fixing <a
    href="http://jira.qos.ch/browse/LBGENERAL-8">LBGENERAL-8</a>.
    </p>

    <p>The setter and getter methods for the layout property in
    <code>AppenderBase</code> class now have reasonable default
    implementations, instead of nop previously. This change was
    requested by Thilo Tanner in <a
    href="http://jira.qos.ch/browse/LBCORE-56">LBCORE-56</a>.
    </p>
    

    <p>Added <em>log4j.dtd</em> compatible <a
    href="manual/layouts.html#log4jXMLLayout"><code>XMLLayout</code></a>
    as requested in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-22">LBCLASSIC-22</a>.
    </p>

    <p>New chapter <a href="manual/onJoran.html">on Joran</a>.</p>

    <hr width="80%" align="center" />

    <h3>29th of December 2008 - Release of version 0.9.14</h3>

    <p>Corrected a serious dead-lock problem occurring during
    configuration. It was reported in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-81">LBCLASSIC-81</a> by
    Holger Mense.</p>

    <p>Corrected thread leakage observed with
    <code>TimeBasedRollingPolicy</code>'s
    <code>AsynchronousCompressor</code>. This bug was reported in <a
    href="http://jira.qos.ch/browse/LBCORE-78">LBCORE-78</a> by Szel
    Zoltan.</p>

    <p>Added <a
    href="manual/filters.html#DuplicateMessageFilter">DuplicateMessageFilter</a>,
    a turbo filter which detects duplicate messages, and beyond a
    certain number of repetitions, drops repeated messages.</p>

    <p>Added a new appender called <a
    href="manual/appenders.html#SiftingAppender"><code>SiftingAppender</code></a>. As
    its name intimates, a <code><code>SiftingAppender</code></code>
    can be used to separate (or sift) logging according to a given
    runtime attribute. For example, <code>SiftingAppender</code> can
    separate logging events according to user sessions, so that the
    logs generated by each user go into distinct log files, one log
    file per user.
    </p>
    
    <p><code>BasicStatusManager</code>'s internal buffer is now split
    into two parts, the header part and the tail part. The header part
    stores the fist H status messages whereas the tail part stores the
    last T messages. At present time H=T=150, although these values may
    change in future releases.</p>

    <p>Fixed <code>NullPointerException</code> thrown when calling
    <code>setContextMap</code> on a fresh MDC. <a
    href="http://jira.qos.ch/browse/LBCLASSIC-98">Issue was</a>
    reported by Francois Terrier.
    </p>


    <p>Evaluators are now wired into an appender automatically
    (implicit rules) without the help of
    <code>EvaluatorAction</code>. EvaluatorAction is now only needed
    for global evaluator elements.  It follows that name attribute is
    necessary only for global evaluators. Embedded evaluators no
    longer need a name. This change fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-100">LBCLASSIC-100</a>. In
    addition, <code>EvaluatorAction</code> has been modified to accept
    evaluators of any type and not just instances of
    <code>JaninoEvaluator</code>.    
    </p>

    <p>Logback-classic default configuration process will now
    automatically print status data on the console in case of warnings
    as well as errors. Previously, status data was printed only in
    case of errors.</p>

    <p><code>ContextInitializer</code> will now print the url of the
    configuration it is using. This should help reduce confusion when
    multiple config files are found on the class path.  This change
    resolves <a
    href="http://jira.qos.ch/browse/LBCLASSIC-55">LBCLASSIC-55</a>
    reported by Anton Tagunov and Henric Larsson.
    </p>

    <p>In case multiple configuration files are found on the class
    path, <code>ContextInitializer</code> will now emit a
    warning. This fixes <a
    href="http://jira.qos.ch/browse/LBCLASSIC-85">LBCLASSIC-85</a>
    filed by Szel Zoltan.
    </p>

    <p><code>HTMLLayout</code> now honors custom conversion words,
    thus fixing <a
    href="http://jira.qos.ch/browse/LBCORE-74">LBCORE-74</a> as
    reported by Natan Cox.</p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCORE-69">LBCORE-69</a> as
    reported by Andrey Rybin. <code>SMTPAppenderBase</code> now has
    support for charset encodings so that email messages can contain
    characters beyond US-ASCII.
    </p>

    <p><code>SMTPAppender</code> in logback-classic now defaults to
    <code>OnErrorEvaluator</code> instead of a janino-based
    evaluator. Thus, by default <code>SMTPAppender</code> no longer
    depends on Janino.</p>

    <p>Added UnsynchronizedAppenderBase class based on Ralph Goers'
    contribution in <a
    href="http://jira.qos.ch/browse/LBCORE-58">LBCORE-58</a>. Note
    that <code>AppenderBase</code> remains unchanged. Appenders which
    need to handle synchronization on their own can do so by deriving
    from <code>UnsynchronizedAppenderBase</code>.</p>

    <h3>5th of December 2008 - Release of version 0.9.13</h3>

    <p>A <code>NullPointerException</code> was being thrown when a the
    level of a logger was set to null. The logger in question had to
    have children. This problem was reported in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-91">LBCLASSIC-91</a>
    by Mateusz Jedruch.
    </p>

    <h3>4th of December 2008 - Release of version 0.9.12</h3>
    
    <p>Fixed <a href="http://jira.qos.ch/browse/LBCORE-26">bug
    LBCORE-26</a> reported by Tsutomu YANO and independently by
    Hontv&aacute;ri J&oacute;zsef and Gamaliel
    Amaudruz. <code>RollingFileAppender</code> when used in conjunction
    with <code>DateBasedRollingPolicy</code> will rollover existing log
    files at initialization if their timestamp warrants it.
    </p>

    <p>Added support for file appending in <a
    href="manual/appenders.html#prudent">prudent mode</a>. Thus,
    multiple <code>FileAppender</code> instances running on multiple
    JVMs can safely write to the same log file. With certain
    limitations, prudent mode extends to
    <code>RollingFileAppender</code>.
    </p>


    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCLASSIC-83">LBCLASSIC-83</a>.
    It is now possible to set the level of a logger to null, even if
    it was previously set to a non-null level. Previously, a
    <code>NullPointerException</code> would be thrown.
    </p>

    <p>In response to <a
    href="http://jira.qos.ch/browse/LBCLASSIC-61">LBCLASSIC-61</a>, <a
    href="http://jira.qos.ch/browse/LBCLASSIC-33">LBCLASSIC-33</a>, <a
    href="http://jira.qos.ch/browse/LBCLASSIC-14">LBCLASSIC-24</a> and
    <a href="http://jira.qos.ch/browse/LBCLASSIC-24">LBCLASSIC-14</a>
    <code>JMXConfigurator</code> has been redesigned.
    </p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBGENERAL-22">LBGENERAL-22</a>. The
    <a href="http://logback.qos.ch/translator/">log4j.properties
    translator</a> web-application has been significantly refactored.
    </p>

    <p>Fixed improvement request <a
    href="http://jira.qos.ch/browse/LBCLASSIC-59">LBCLASSIC-59</a>
    relation to StatusListeners, originally submitted by Anton Tagunov.
    </p>

    <p>The logger and class name converters now consider zero as
    having special meaning, and will return the simple class name,
    removing the package name prefix. This feature was asked by
    Silvano Maffeis.</p>
    
    <p>In response to <a
    href="http://jira.qos.ch/browse/LBCLASSIC-54"> LBCLASSIC-54</a>
    support for turbo filters has refactored. The present code is safe
    under concurrent access while still offering good performance.
    </p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCORE-43">LBCORE-43</a> reported
    by Bruno Navert. Configuration files can now look up property
    files from classpath resources.
    </p>

    <p>Fixed <a
    href="http://jira.qos.ch/browse/LBCLASSIC-86">LBCLASSIC-86</a>
    related to <code>AccessControlException</code> thrown when run in
    a JVM with a <code>SecurityManager</code>.
    </p>

    <p>Invoking the <code>LoggerContext.reset()</code> method resets
    logger levels to their default value, that is <code>DEBUG</code>
    for the root logger and <code>null</code> for all other
    loggers. This was requested in <a
    href="http://jira.qos.ch/browse/LBCLASSIC-90">LBCLASSIC-90</a> by
    Mateusz Jedruch.
    </p>

    <!-- ======================== minor ================== -->

    <p>Fixed <a href="http://jira.qos.ch/browse/LBCLASSIC-69">bug
    LBCLASSIC-69</a> reported by Anton Tagunov. The
    LevelToSyslogSeverity now correctly handles the TRACE level.
    </p>

    <p>Fixed <a href="http://jira.qos.ch/browse/LBCLASSIC-57">bug
    LBCLASSIC-57</a> reported by Anton Tagunov. SyslogAppender could
    overwhelm the Syslog server with very large messages. SyslogAppender
    now limits its message size to 256K.
    </p>

    <p>Logback now supports <a
    href="manual/configuration.html#contextName">setting the logger context
    name</a> as well as inserting variables <a
    href="manual/configuration.html#insertFromJNDI">stored in JNDI</a> as
    properties.
    </p>

    <p>Fixed issue <a
    href="http://jira.qos.ch/browse/LBCLASSIC-49">LBCLASSIC-49</a>
    reported by Oliver Lietz. The getLogger() method in
    <code>LoggerContext</code> class will now throw an
    <code>IllegalArgumentException</code> when invoked with a null
    argument.
    </p>


  <hr width="80%" align="center" />

  <h3>28th of October 2008 - Release of version 0.9.11</h3>

  <p>Fixed <a
  href="http://jira.qos.ch/browse/LBCLASSIC-77">LBCLASSIC-77</a>
  reported independently by Gianni Doe, Yannick Haudry and Yossi Shaul.
  The childValue() method of <code>CopyOnInheritThreadLocal</code>
  class part of MDC code no longer throws a
  <code>NullPointerException</code>.
  </p>

  <hr width="80%" align="center" />

  <h3>27th of October 2008 - Release of version 0.9.10</h3>

  <p>In case of errors during initialization, logback-classic now
  <em>automatically</em> prints out its internal status. This has been
  a frequently requested feature.
  </p>

  <p>The LogbackValve in logback-access (ensuring integration with
  Tomcat), will now systematically print its internal status upon
  initialization, unless told to be quiet. This greatly helps
  troubleshooting the configuration of logback-access under Tomcat.
  </p>

  <p>Fixed <a href="http://bugzilla.qos.ch/show_bug.cgi?id=147">bug
  147</a> which occurred when the user inadvertently attempted to set
  the layout of a <code>SyslogAppender</code>.  The code now actively
  prevents this. Documentation has been updated to reflect the change.
  </p>

  <p>Fixed <a href="http://jira.qos.ch/browse/LBCLASSIC-56">bug
  LBCLASSIC-56</a> originally reported by Michel Colette. Backslash
  characters are now correctly interpreted in filename patterns.
  </p>

  <p>The TurboFilterChain in a LoggerContext is <a
  href="http://svn.qos.ch/viewvc?view=rev&amp;revision=1678">now
  cleared</a> when the <code>reset</code>() method is called. This
  problem was reported on May 1st, 2008, by Julia Hu on the logback
  developers list.
  </p>

  <!-- ========================== LB CORE ================== -->

  <p>Fixed issue <a
  href="http://jira.qos.ch/browse/LBCORE-48">LBCORE-48</a>.  During
  rollover, compression of large files would bring all logging to a
  halt. In this latest release, the rolled over file is first renamed,
  which is a relatively fast operation, and only then is the renamed
  file compressed asynchronously (in a separate thread).
  </p>

  <p>Fixed issue <a
  href="http://jira.qos.ch/browse/LBCORE-11">LBCORE-11</a>.  It is now
  possible to instruct TimeBasedRollingPolicy to delete old files,
  thus controlling then number of archived log files.</p>

  <p>Fixed issue <a
  href="http://jira.qos.ch/browse/LBCORE-42">LBCORE-42</a>. If the
  parent directory of the log file does not exist, then FileAppender
  will create it, including any necessary but nonexistent parent
  directories.
  </p>

  <p>Fixed <a href="http://jira.qos.ch/browse/LBCORE-15">LBCORE-15</a>
  reported by Klaus Unger and others. DBAppender should now work with
  Oracle 9, 10g and 11g, regardless of the JDBC driver type used.
  </p>

  <p>Fixed issue <a
  href="http://jira.qos.ch/browse/LBCORE-17">LBCORE-17</a> reported by
  Thorbj&oslash;rn Ravn Andersen. Logback now relies on Geronimo JMS
  API specifications instead of Sun's JMS API specification, the
  latter requiring manual installation. With Geronimo JMS, logback can
  be built using Maven without needing to manually install any
  dependencies.
  </p>

  <p>Fixed issue <a
  href="http://jira.qos.ch/browse/LBCORE-23">LBCORE-23</a>. In
  PatternLayout, parenthesis can be used to group conversion
  patterns. It follows that the '(' and ')' carry special meaning and
  need to be escaped to be used as literals. This is now properly
  documented.
  </p>

  <p>The location of the default configuration file can be specified
  by a system property. This feature was requested in <a
  href="http://jira.qos.ch/browse/LBCORE-32">LBCORE-32</a> by Ted
  Graham, Matt Fowles, Ivan Biddles and Ralph Goers.
  </p>

  <p>Fixed issue <a
  href="http://jira.qos.ch/browse/LBCORE-55">LBCORE-55</a> reported by
  Natan Cox. <code>WriterAppender</code> now outputs its presentation
  footer and file footer in the the correct order.
  </p>


  <p>Fixed issue <a
  href="http://jira.qos.ch/browse/LBCORE-27">LBCORE-27</a> reported by
  Peter Royal. <code>SMTPAppender</code> now outputs its presentation
  footer and file footer in the the correct order.
  </p>

  <!-- ========================== LB CLASSIC ================== -->

  <p>Fixed issue <a
  href="http://jira.qos.ch/browse/LBCLASSIC-67">LBCLASSIC-67</a>
  reported by Alessandro Fustini. SMTPAppender now correctly
  configures the layout used to format the subject line of the
  outgoing email. It no longer appends a lengthy stack trace to the
  subject line.
  </p>


  <p>Fixed issue <a
  href="http://jira.qos.ch/browse/LBCLASSIC-68">LBCLASSIC-68</a>
  reported by Gili Tzabari. In environments where the TCCL (Thread
  Context Class Loader) was not set, logback was unable to located its
  default configuration files. Logback now uses the class loader that
  loaded logback itself to locate its resources instead of the
  TCCL. This approach is simpler and deemed to cover more
  environments, i.e. more widely applicable.
  </p>


  <p>Fixed issue <a
  href="http://jira.qos.ch/browse/LBGENERAL-24">LBGENERAL-24</a>
  reported by Hung Tang. SMTPAppender now supports plain
  username/password authentication as well as both the STARTTLS
  command and SSL connections.
  </p>

 
  <p>Fixed issue <a
  href="http://jira.qos.ch/browse/LBCLASSIC-48">LBCLASSIC-48</a>
  reported by Peter Royal. SyslogAppender now correctly outputs hours
  as 0-23 and not as 1-12 as previously.
  </p>

  <p>Added a new TurboFilter called DynamicThresholdFilter which can
  filter events depending on MDC values based on a variety of criteria
  such as company name, product or the end user. This filter was
  contributed by Ralph Goers in <a
  href="http://jira.qos.ch/browse/LBCLASSIC-53">LBCLASSIC-53</a>.  
  </p>

  
  <hr width="80%" align="center" />
 


  <h3>26th of March 2008 - Release of version 0.9.9</h3>
  
  <p>MDC data in now inherited by child threads. This behaviour was
  already specified in the javadocs. The issue was raised by Martin
  Benda in <a href="http://bugzilla.qos.ch/show_bug.cgi?id=64">bug
  64</a> and independently by Peter Huber.
  </p>
  
  <p>Logback no longer includes retro-weaver generated jars for JDK
  1.4. There seems to be little interest in JDK 1.4 builds. Calling
  retro-weaver increases logback's build time by a few seconds each
  time &ndash; seconds in which we can do more productive things.
  </p>

  <p>Fixed <a href="http://bugzilla.qos.ch/show_bug.cgi?id=104">bug
  104</a>, silly but but nonetheless serious copy-and-paste errors in
  the c.q.l.classic.Logger class, reported by Joern Huxhorn.
  </p>

  <p>Having been replaced by <code>SimpleSocketServer</code>, the
  <code>SocketServer</code> class has been removed.
  </p>
  
  <p>Fixed <a href="http://bugzilla.qos.ch/show_bug.cgi?id=105">bug
  105</a>, sockets created by <code>SocketAppenderBase</code> is now
  closed, reported by Joern Huxhorn. More generally,
  <code>SimpleSocketServer</code> is much more careful to track open
  client connections and to close them.
  </p>

  <p>Fixed <a href="http://bugzilla.qos.ch/show_bug.cgi?id=110">bug
  110</a> in relation with the <code>requestParameterMap</code> field
  in <code>AccessEvent</code> - reported by Joern Huxhorn.
  </p>

  <p>Fixed <a href="http://bugzilla.slf4j.org/show_bug.cgi?id=66">
  SLF4J bug 66</a> in relation with caller data when using
  log4j-over-slf4j - reported by Frnack Routier.
  </p>

  <p>Fixed <a href="http://bugzilla.qos.ch/show_bug.cgi?id=129">bug
  129</a> reported by Michael Franz. As a result, Joran now supports
  nested as well as multiple file inclusions.
  </p>

  <p>Fixed <a href="http://bugzilla.qos.ch/show_bug.cgi?id=100">bug
  100</a> reported by Joern Huxhorn. At serialization time, object
  array passed as parameter, when the LoggingEvent is are now
  serialized as strings.
  </p>

  <p>Fixed <a href="http://bugzilla.qos.ch/show_bug.cgi?id=109">bug
  109</a> reported by Joern Huxhorn. There should no longer be any
  NullPointerExceptions thrown by deserialized
  <code>AccessEvent</code> instances.
  </p>

  <p>Fixed <a href="http://bugzilla.qos.ch/show_bug.cgi?id=8">bug
  8</a> reported by Sebastien Pennec. The documentation has been
  updated to reflect the fact that that in the context of conversion
  patterns the percent sign carries special meaning, in order to
  include the percent sign as a literal, it must be escaped with a
  backslash.
  </p>

  <p>Fixed <a href="http://bugzilla.qos.ch/show_bug.cgi?id=52">bug
  52</a> reported by Kenichi Masuko. The bug has been fixed on March
  8th, 2007. Starting with this release, Joran will support the
  injection of any enum type, not just <code>FilterReply</code>.
  </p>

  <hr width="80%" align="center" />


  <h3>22th of August 2007 - Release of version 0.9.8</h3>
  
  <p>This version of logback synchronizes with SLF4J version 1.4.3. In
  particular, logback now natively supports SLF4J's MDC API introduced
  in SLF4J version 1.4.1. If you are using SLF4J version 1.4.1 or
  later please make sure upgrade to logback version 0.9.8 or later.
  </p>

  <p>Fixed a number of documentation related bugs, in particular <a
  href="http://bugzilla.qos.ch/show_bug.cgi?id=90">bug 90</a> reported
  by Luc Maisonobe and <a
  href="http://bugzilla.qos.ch/show_bug.cgi?id=90">bug 88</a> reported
  by Sebastian Davids.
  </p>

  <p>It is now possible to include configuration file fragments (in
  XML) as a resource. Previously, it was only possible to include a
  file by specifying a path to a file or a URL.  This feature was
  requested by Michael Newcomb in <a
  href="http://bugzilla.qos.ch/show_bug.cgi?id=89">bug 89</a>.
  </p>

  <p>Fixed caller data extraction problem as reported in <a
  href="http://bugzilla.qos.ch/show_bug.cgi?id=78">bug 78</a> by Hans
  van der Meer.
  </p>

  <p>The LoggingEvent class' constructor now correctly takes into
  account the argument array passed by the user. This problem was
  reported in <a href="http://bugzilla.qos.ch/show_bug.cgi?id=85">bug
  85</a> by Robert Christian.
  </p>

  <hr width="80%" align="center" />


  <h3>29th of May 2007 - Release of version 0.9.7</h3>


  <p>This release corrects packaging bugs <a
  href="http://bugzilla.qos.ch/show_bug.cgi?id=75">75</a> and <a
  href="http://bugzilla.qos.ch/show_bug.cgi?id=76">76</a> related to
  the migration of logback to SLF4J version 1.4.0. There are no other
  changes.
  </p>


  <hr width="80%" align="center" />

  <h3>23rd of May 2007 - Release of version 0.9.6</h3>


  <p>Logback is now aligned and compatible with SLF4J version 1.4.0,
  thus correcting <a
  href="http://bugzilla.qos.ch/show_bug.cgi?id=73">bug 73</a> as
  reported by Andy Gerweck.
  </p>

  <p>Fixed <code>NoClassDefFoundError</code> problem when running
  under JDK 1.4 <a
  href="http://www.qos.ch/pipermail/logback-user/2007-April/000206.html">as
  reported</a> by Brian Suksomwong.
  </p>

  <p>Fixed <a href="http://bugzilla.qos.ch/show_bug.cgi?id=63">bug
  63</a> as reported by La Canea Rosario. Calling log4j (bridge) with
  the trace level will no longer cause an IllegalStateException to be
  thrown.
  </p>

  <p>Fixed <a href="http://bugzilla.qos.ch/show_bug.cgi?id=70">bug
  70</a> as reported by Dirk Ooms. The %throwable conversion word is
  now recognized as documented in the logback manual. Moreover, the
  manual now mentions the %nopex word which can be used to force
  <code>PatternLayout</code> to ignore the exception contained in the
  logging request.
  </p>

  
  <p>As in most releases, the documentation has been improved.</p>

  <hr width="80%" align="center" />


  <h3>April 2nd, 2007 - Release of version 0.9.5</h3>

  <p>Fixed methods <code>isInfoEnabled</code>,
  <code>isWarnEnabled</code> and <code>isErrorEnabled</code> methods
  in <code>ch.qos.logback.classic.Logger</code> class which failed to
  work correctly. This bug was reported today by Pavel Kral on the
  slf4j-user list. 
  </p>

  <p>Contrary to previous versions of logback, the various
  Logger.isXYZEnabled(Marker) methods now take into account the marker
  information passed as parameter.
  </p>


  <p>As discussed in <a
  href="http://bugzilla.qos.ch/show_bug.cgi?id=54">bug 54</a>, during
  automatic initialization, it makes better sense to first check for
  <em>logback-test.xml</em> file and only if that fails, to check for
  <em>logback.xml</em>. Maven2 will guarantee that the
  logback-test.xml file, if places under test/resources will not be
  included in the artifact it produces.
  </p>


  <hr width="80%" align="center" />
  
  <h3>March 29th, 2007 - Release of version 0.9.4</h3>
    
  <p>Significant bug fixes made to <code>c.q.l.access.TeeFilter</code>
  and Co. Images and other binary files are now intercepted and
  replayed correctly. As for "x-www-form-urlencoded" post requests,
  their input buffer is left untouched. In a best-effort attempt, the
  input buffer for "x-www-form-urlencoded" post requests is later
  reconstructed through the request parameters. However, it may differ
  from the original buffer.
  </p>
    
  <p>The logback team released today the first version of a plugin for
  Eclipse that allows developers to visualize logs generated by a
  running application.  It offers several nice features. Please check
  the <a href="consolePlugin.html">console plugin-in guide</a> for
  more details.
  </p>


  <h3>March 20th, 2007 - Release of version 0.9.3</h3>
  
  <p>Includes in configuration files are now supported by Joran,
  logback's configuration framework. A file can contain an
  <em>include</em> element that has a <em>file</em> or <em>url</em>
  attribute pointing to a configuration file.  See the <a
  href="manual/configuration.html#fileInclusion">chapter about
  configuration</a> in the logback's online manual for more
  information.
  </p>
    
  <p>Corrected bug 53 reported by Wilkins Poe. There is now a <a
  href="dependencies.html">dependencies page</a> that shows the
  requirements of each of logback's modules.
  </p>
    
  <p>After a <a
  href="http://www.slf4j.org/pipermail/user/2007-March/000297.html">
  discussion on the SLF4J mailing list</a> started by Franck Routier,
  a correction has been made when logging using the
  <em>JCL104-over-slf4j</em> module. Logback now correctly shows the
  caller location information.
  </p>
    
  <p>As in most logback releases, the documentation has been improved.
  </p>
    

  <h3>March 5th, 2007 - Release of version 0.9.2</h3>
  
  <p>The documentation is now in the <em>docs/</em> directory to allow an
  easier access to the logback manual and website for offline viewing.
  </p>
  
  <h3>March 5th, 2007 - Release of version 0.9.1</h3>
  
  <p>Logback-class now depends on SLF4J version 1.3.0 instead of
  1.2.</p>
  
  <p>Numerous improvements to the documentation.</p>
  
  <p><a href="http://bugzilla.qos.ch/show_bug.cgi?id=46">Bug #46</a>
  reported by Mark Renyolds has been fixed. The
  <code>TimeUtilTest</code> should now run fine under any time
  zone.</p>
		
  <p><a href="http://bugzilla.qos.ch/show_bug.cgi?id=45">Bug
  #45</a>, also reported by Mark Reynolds, has been fixed. There
  should be no <code>ClassCastException</code> thrown anymore when
  passing an <code>Object</code> to the printing methods using the
  log4j-bridge module. </p>
  
  <hr width="80%" align="center" />
  
  <h3>January 31st, 2007 - Release of version 0.9</h3>
  
  <p>This version contains a new component, namely the
  <code>ContextSelector</code>, that provides context separation and
  management when logback is used by several web-apps running under
  the same server. A <a href="manual/contextSelector.html">new
  chapter</a> was added to the logback manual to detail the use of the
  <code>ContextSelector</code>, along with its associated components.
  </p>
    
  <p>The <code>JMXConfigurator</code> has been improved. It now shows
  the context's Status objects, which lets users check the internal
  state of logback.
  </p>
    
  <p>The logback manual's chapter 2, about <a
  href="manual/architecture.html">logback's architecture</a>, has been
  updated with two sections: Under the hood and Performance.
  </p>
  
  <hr width="80%" align="center" />
  
  <h3>January 23th, 2007 - Release of version 0.8.1</h3>
  
  <p>This version contains new components in the Access module,
  allowing users to display the full HttpServletRequest or
  HttpServletResponse of an access event.
  </p>
    
  <p>The documentation section has been updated. The short
  introduction was split into the chapter 1 and chapter 2 of the
  logback manual. The chapters about Appenders and Layouts have been
  updated to document new components of logback.
  </p>
    
  <p>A demonstration webApp presenting logback's major components is
  available.  A document explains how to run it, and provides a
  step-by-step visit of the demo.
  </p>
  
  <p>A first translation of logback jars to JDK1.4 is present in
  this release.
  </p>
  
  
  <hr width="80%" align="center" />
  
  <h3>January 12th, 2007 - Release of version 0.8</h3>
  
  <p>This version contains a whole new chapter, namely Chapter 3,
  about logback configuration. Several other documentation pages
  have been improved.
  </p>
  
  <p>Logback now uses Generics in many components.
  </p>
  
  <p>Several new components have been added to logback. A JMX
  Configurator now allows users to see and modify loggers or reload
  configuration among other possibilities.  A <a
  href="jmxConfig.html">document</a> about this configurator is
  available in the <a href="documentation.html">corresponding
  section</a> of the site. We'd like to thank Sebastian Davids for his
  ideas and contributions to this component.
  </p>
		
  <p>A JMSTopicAppender and JMSQueueAppender are now available, as
  well as two new filters: LevelFilter and ThresholdFilter. A
  refactoring was done in the filters objects to ease the
  implementation of custom filters.
  </p>
		
  <hr width="80%" align="center" />

		
  <h3>December 19th, 2006 - Release of version 0.7.1</h3>
  
  <p>Version 0.7.1 of logback has been released.
  </p>
  
  <p>This version contains more detailed information about logback
  access module, and its JMX components. A <a
  href="access.html">dedicated page</a> explains how to configure and
  use logback access in Tomcat and Jetty, and access some of its
  components via JMX.
  </p>
		
  <hr width="80%" align="center" />
  
  <h3>December 18th, 2006 - Release of version 0.7</h3>
  
  <p>Version 0.7 of logback has been released.</p>
		
  <p>Logback now ships with a new module: <em>log4j-bridge</em>. This
  new module can be used to intercept log4j calls and redirects them
  to logback components.  More information about this module can be
  found in the corresponding <a href="bridge.html">documentation
  page</a>.
  </p>
		
  <p>The documentation has been vastly updated. Two new chapters,
  namely Filters and MDC, are available in the manual section.
  </p>

  <hr width="80%" align="center" />
  
  <h3>November 30th, 2006 - Release of version 0.6</h3>
  
  <p>Version 0.6 of logback has been released.
  </p>
  
  <p>Logback classic now supports automatic configuration, allowing
  test and production environment
  configuration. <code>TurboFilters</code> make their first appearance
  in a logback release. They provide ultra-fast filtering
  possibilities.  The logging context now supports listeners which
  will be contacted each time the context is reset or
  started. <code>SMTPAppender</code> allows for much more flexible
  configuration than before.
  </p>
		
  <p>In logback access, new Appenders are available, namely
  <code>SocketAppender</code> and <code>DBAppender</code>.  Logback
  access now supports filtering and event evaluations. A
  <code>CountingFilter</code> has been added. It provides statistical
  views of server access, reachable via JMX.
  </p>
		
  <p>The documentation has also been improved. A complete new chapter
  has been added about Appenders, the short introduction to logback
  classic has been updated and a new module, containing many
  configuration examples has been added.
  </p>
		
  <p>Logback now uses continuous integration in its development.
  </p>
		
  <p>Tests have been improved, many new have been added.  This release
  also provides some bug fixes.
  </p>

  <hr width="80%" align="center" />
  
  <h3>October 26th, 2006 - Release of version 0.5</h3>
  
  <p>Version 0.5 of logback has been released.
  </p>
		
  <p>This release offers a important improvements in Joran. In
  particular, Joran can now replay configuration elements.
  </p>

  <p>As in the previous release, a major area of work is the
  documentation which is being continuously improved.
  </p>

  <hr width="80%" align="center" />
  
  <h3>October 9th, 2006 - Release of version 0.4</h3>
  
  <p>Version 0.3 of logback has been released.
  </p>
		
  <p>This release includes an improved access module, with specific
  implementations for the Jetty and Tomcat servers. Documentation was
  also added to show how to integrate logback-access with Jetty.
  </p>

  <p>As for the classic module, several appenders and layouts have
  been added or improved.  The error reporting of logback has also
  been enhanced, presenting the user with a link to an online page
  explaining possible reasons for the error.
  </p>

  <p>Joran documentation was added, with examples in the core
  module.
  </p>
	
  <hr width="80%" align="center" />
  
  <h3>September 8th, 2006 - Release of version 0.3</h3>
  <p>
    Version 0.3 of logback has been released.
  </p>
  
  <p>This release offers several new Appenders, support for Mapped
  Diagnostic Context, improved tests and documentation<br />
  </p>

  <p>In response to a bug report by Rickard Nilsson on the logback
  mailing list, a bug affecting parametrized logging was fixed.
  </p>

  <p>We also released a <a
  href="http://logback.qos.ch/translator/">PropertiesTranslator</a>
  webapp that converts <em>log4j.properties</em> files to joran
  configuration files (in XML format).<br />
  </p>
	
  <hr width="80%" align="center" />
		
  <h3>August 23th, 2006 - Release of version 0.2.5</h3>
  
  <p> Version 0.2.5 of logback has been released. </p>

  <p>This release offers better documentation, with a number of
  corrections made in the short introduction to logback-classic.
  </p>
  
  <hr width="80%" align="center" />
  
  
  <h3>August 15th, 2006 - Release of version 0.2</h3>
  
  <p>Version 0.2 of logback has been released.</p>

  <p>It offers better tests, some more functionality, and enhanced
  documentation.  We also improved the site design to make it simpler
  and more efficient.
  </p>

  <hr width="80%" align="center" />
  
  <h3>July 26th, 2006 - Release of version 0.1</h3>
  
  <p>Version 0.1 of logback has been released.</p>
  
  <hr width="80%" align="center" />
  
  <h3>February 9th, 2006 - Logback web-site goes live</h3>
  
  <p>The logback web-site goes live on the 9th of February. At its
  present state, it is pretty primitive but updates will follow.
  </p>
  
	
  <script src="templates/footer.js" type="text/javascript"></script>
</div>
</body>
</html>
